mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-05-29 23:07:11 +00:00
Fix loading of 0-sized key on platforms where malloc(0)=NULL
This commit is contained in:
parent
2c2cf0e36d
commit
3495b58fcf
|
@ -309,16 +309,22 @@ psa_status_t psa_parse_key_data_from_storage( const uint8_t *storage_data,
|
||||||
*key_data_length > PSA_CRYPTO_MAX_STORAGE_SIZE )
|
*key_data_length > PSA_CRYPTO_MAX_STORAGE_SIZE )
|
||||||
return( PSA_ERROR_STORAGE_FAILURE );
|
return( PSA_ERROR_STORAGE_FAILURE );
|
||||||
|
|
||||||
*key_data = mbedtls_calloc( 1, *key_data_length );
|
if( *key_data_length == 0 )
|
||||||
if( *key_data == NULL )
|
{
|
||||||
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
*key_data = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*key_data = mbedtls_calloc( 1, *key_data_length );
|
||||||
|
if( *key_data == NULL )
|
||||||
|
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
||||||
|
memcpy( *key_data, storage_format->key_data, *key_data_length );
|
||||||
|
}
|
||||||
|
|
||||||
GET_UINT32_LE(*type, storage_format->type, 0);
|
GET_UINT32_LE(*type, storage_format->type, 0);
|
||||||
GET_UINT32_LE(policy->usage, storage_format->policy, 0);
|
GET_UINT32_LE(policy->usage, storage_format->policy, 0);
|
||||||
GET_UINT32_LE(policy->alg, storage_format->policy, sizeof( uint32_t ));
|
GET_UINT32_LE(policy->alg, storage_format->policy, sizeof( uint32_t ));
|
||||||
|
|
||||||
memcpy( *key_data, storage_format->key_data, *key_data_length );
|
|
||||||
|
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue