Merge pull request #48 from dgreen-arm/fix-zero-key-copy

Allow NULL buffers in psa_copy_key_material when the key size is zero
This commit is contained in:
Jaeden Amero 2019-02-11 17:27:19 +00:00 committed by GitHub
commit 8a23dc6642
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1227,7 +1227,7 @@ static psa_status_t psa_copy_key_material( const psa_key_slot_t *source,
buffer_size = PSA_KEY_EXPORT_MAX_SIZE( source->type, buffer_size = PSA_KEY_EXPORT_MAX_SIZE( source->type,
psa_get_key_bits( source ) ); psa_get_key_bits( source ) );
buffer = mbedtls_calloc( 1, buffer_size ); buffer = mbedtls_calloc( 1, buffer_size );
if( buffer == NULL ) if( buffer == NULL && buffer_size != 0 )
return( PSA_ERROR_INSUFFICIENT_MEMORY ); return( PSA_ERROR_INSUFFICIENT_MEMORY );
status = psa_internal_export_key( source, buffer, buffer_size, &length, 0 ); status = psa_internal_export_key( source, buffer, buffer_size, &length, 0 );
if( status != PSA_SUCCESS ) if( status != PSA_SUCCESS )
@ -1235,6 +1235,7 @@ static psa_status_t psa_copy_key_material( const psa_key_slot_t *source,
status = psa_import_key( target, source->type, buffer, length ); status = psa_import_key( target, source->type, buffer, length );
exit: exit:
if( buffer_size != 0 )
mbedtls_platform_zeroize( buffer, buffer_size ); mbedtls_platform_zeroize( buffer, buffer_size );
mbedtls_free( buffer ); mbedtls_free( buffer );
return( status ); return( status );