mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-02-24 21:56:55 +00:00
Add checks for buffer size
Signed-off-by: gabor-mezei-arm <gabor.mezei@arm.com>
This commit is contained in:
parent
7fbea09847
commit
3fd792d076
|
@ -3511,6 +3511,13 @@ psa_status_t psa_cipher_encrypt( mbedtls_svc_key_id_t key,
|
||||||
key_type = slot->attr.type;
|
key_type = slot->attr.type;
|
||||||
iv_length = PSA_CIPHER_IV_LENGTH( key_type, alg );
|
iv_length = PSA_CIPHER_IV_LENGTH( key_type, alg );
|
||||||
|
|
||||||
|
if( output_size < PSA_CIPHER_ENCRYPT_OUTPUT_SIZE( key_type, alg,
|
||||||
|
input_length ) )
|
||||||
|
{
|
||||||
|
status = PSA_ERROR_BUFFER_TOO_SMALL;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
if( iv_length > 0 )
|
if( iv_length > 0 )
|
||||||
{
|
{
|
||||||
if( output_size < iv_length )
|
if( output_size < iv_length )
|
||||||
|
@ -3562,11 +3569,25 @@ psa_status_t psa_cipher_decrypt( mbedtls_svc_key_id_t key,
|
||||||
.core = slot->attr
|
.core = slot->attr
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if( input_length < PSA_CIPHER_IV_LENGTH( slot->attr.type, alg ) )
|
||||||
|
{
|
||||||
|
status = PSA_ERROR_INVALID_ARGUMENT;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( output_size < PSA_CIPHER_DECRYPT_OUTPUT_SIZE( slot->attr.type, alg,
|
||||||
|
input_length ) )
|
||||||
|
{
|
||||||
|
status = PSA_ERROR_BUFFER_TOO_SMALL;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
status = psa_driver_wrapper_cipher_decrypt(
|
status = psa_driver_wrapper_cipher_decrypt(
|
||||||
&attributes, slot->key.data, slot->key.bytes,
|
&attributes, slot->key.data, slot->key.bytes,
|
||||||
alg, input, input_length,
|
alg, input, input_length,
|
||||||
output, output_size, output_length );
|
output, output_size, output_length );
|
||||||
|
|
||||||
|
exit:
|
||||||
unlock_status = psa_unlock_key_slot( slot );
|
unlock_status = psa_unlock_key_slot( slot );
|
||||||
|
|
||||||
return( ( status == PSA_SUCCESS ) ? unlock_status : status );
|
return( ( status == PSA_SUCCESS ) ? unlock_status : status );
|
||||||
|
|
|
@ -535,6 +535,12 @@ static psa_status_t cipher_decrypt( const psa_key_attributes_t *attributes,
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
|
if( output_size < accumulated_length )
|
||||||
|
{
|
||||||
|
status = PSA_ERROR_BUFFER_TOO_SMALL;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
status = cipher_finish( &operation, output + accumulated_length,
|
status = cipher_finish( &operation, output + accumulated_length,
|
||||||
output_size - accumulated_length, &olength );
|
output_size - accumulated_length, &olength );
|
||||||
accumulated_length += olength;
|
accumulated_length += olength;
|
||||||
|
|
Loading…
Reference in a new issue