mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-07-20 19:48:37 +00:00
PSA Crypto: Don't skip key data removal when SE driver is not in use
Closing a wrapped key with the new SE driver interface while MBEDTLS_PSA_CRYPTO_SE_C is also enabled leads to the key material not being freed, even though an old SE driver is not in use, leading to a memory leak. This is because a wrapped key is also considered external. This commit extends the check for skipping by checking whether an old-style SE driver is registered with the provided slot, in addition to checking whether the key is external. Signed-off-by: Fredrik Strupe <fredrik.strupe@silabs.com>
This commit is contained in:
parent
7829748cd4
commit
462aa575a4
3
ChangeLog.d/psa_close_key_memory_leak_fix.txt
Normal file
3
ChangeLog.d/psa_close_key_memory_leak_fix.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Bugfix
|
||||||
|
* Fix memory leak that occured when calling psa_close_key() on a
|
||||||
|
wrapped key with MBEDTLS_PSA_CRYPTO_SE_C defined.
|
|
@ -1197,7 +1197,8 @@ static psa_status_t psa_get_transparent_key( psa_key_handle_t handle,
|
||||||
static psa_status_t psa_remove_key_data_from_memory( psa_key_slot_t *slot )
|
static psa_status_t psa_remove_key_data_from_memory( psa_key_slot_t *slot )
|
||||||
{
|
{
|
||||||
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
||||||
if( psa_key_slot_is_external( slot ) )
|
if( psa_get_se_driver( slot->attr.lifetime, NULL, NULL ) &&
|
||||||
|
psa_key_slot_is_external( slot ) )
|
||||||
{
|
{
|
||||||
/* No key material to clean. */
|
/* No key material to clean. */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue