Reject zero-lengths in psa_crypto_copy_and_free()

Zero-length buffers should be represented in the
psa_crypto_buffer_copy_t struct as NULL if it was created in
psa_crypto_alloc_and_copy(), so reject non-NULL zero-length buffers.

Signed-off-by: David Horstmann <david.horstmann@arm.com>
This commit is contained in:
David Horstmann 2023-11-02 12:00:02 +00:00
parent 2b79cbaa17
commit 72ab8ad44a
2 changed files with 16 additions and 0 deletions

View File

@ -8521,7 +8521,17 @@ error:
psa_status_t psa_crypto_copy_and_free(psa_crypto_buffer_copy_t *buffers)
{
if ((buffers->input != NULL) && (buffers->input_len == 0)) {
/* Reject zero-length buffers, these should have been represented by
* NULL in psa_crypto_alloc_and_copy() */
return PSA_ERROR_INVALID_ARGUMENT;
}
if (buffers->output != NULL) {
if (buffers->output_len == 0) {
/* Reject zero-length buffers, these should have been represented
* by NULL in psa_crypto_alloc_and_copy() */
return PSA_ERROR_INVALID_ARGUMENT;
}
if (buffers->output_original == NULL) {
/* Output is non-NULL but original output is NULL. The argument
* buffers is invalid. Return an error as we have no original to

View File

@ -7472,3 +7472,9 @@ psa_crypto_copy_and_free:0:20:0:20:1:PSA_ERROR_INVALID_ARGUMENT
PSA buffers copy and free, null output_original and null output
psa_crypto_copy_and_free:0:20:1:0:1:PSA_SUCCESS
PSA buffers copy and free, zero-length input
psa_crypto_copy_and_free:0:0:0:20:0:PSA_ERROR_INVALID_ARGUMENT
PSA buffers copy and free, zero-length output
psa_crypto_copy_and_free:20:0:0:0:0:PSA_ERROR_INVALID_ARGUMENT