Reject NULL original_output with non-NULL output

If we have a copy buffer but no original to copy back to, there is not
much sensible we can do. The psa_crypto_buffer_copy_t state is invalid.

Signed-off-by: David Horstmann <david.horstmann@arm.com>
This commit is contained in:
David Horstmann 2023-11-01 17:55:43 +00:00
parent f4bbb632cd
commit 2b79cbaa17
2 changed files with 12 additions and 0 deletions

View File

@ -8522,6 +8522,12 @@ error:
psa_status_t psa_crypto_copy_and_free(psa_crypto_buffer_copy_t *buffers)
{
if (buffers->output != NULL) {
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
* copy back to. */
return PSA_ERROR_INVALID_ARGUMENT;
}
memcpy(buffers->output_original, buffers->output, buffers->output_len);
}

View File

@ -7466,3 +7466,9 @@ psa_crypto_copy_and_free:1:0:0:20:0:PSA_SUCCESS
PSA buffers copy and free, null output
psa_crypto_copy_and_free:0:20:1:0:0:PSA_SUCCESS
PSA buffers copy and free, null output_original
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