From 58b209cf6060db60375a2ca9fb21febfae3b8f31 Mon Sep 17 00:00:00 2001 From: Philippe Reynes Date: Thu, 6 Feb 2020 17:12:59 +0100 Subject: [PATCH] test: aes: fix memleak In the first version, the result of malloc is checked with ut_assertnonnull. But on a fail, this macro exit the function, so previously malloc are not freed. So to avoid a memleak, we don't use ut_assertnonnull, but simply check the return of malloc. If one has failed, we freed all the allocated memory and quit the function. Reported-by: Coverity (CID: 284403) Reported-by: Coverity (CID: 284404) Reported-by: Coverity (CID: 284405) Reported-by: Coverity (CID: 284406) Reported-by: Coverity (CID: 284407) Signed-off-by: Philippe Reynes --- test/lib/test_aes.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/lib/test_aes.c b/test/lib/test_aes.c index b7b4b775df..fb8a0b17ba 100644 --- a/test/lib/test_aes.c +++ b/test/lib/test_aes.c @@ -88,17 +88,17 @@ static int _lib_test_aes_run(struct unit_test_state *uts, int key_len, /* Allocate all the buffer */ key = malloc(key_len); - ut_assertnonnull(key); key_exp = malloc(key_exp_len); - ut_assertnonnull(key_exp); iv = malloc(AES_BLOCK_LENGTH); - ut_assertnonnull(iv); nocipher = malloc(num_block * AES_BLOCK_LENGTH); - ut_assertnonnull(nocipher); ciphered = malloc((num_block + 1) * AES_BLOCK_LENGTH); - ut_assertnonnull(ciphered); uncipher = malloc((num_block + 1) * AES_BLOCK_LENGTH); - ut_assertnonnull(uncipher); + + if (!key || !key_exp || !iv || !nocipher || !ciphered || !uncipher) { + printf("%s: can't allocate memory\n", __func__); + ret = -1; + goto out; + } /* Initialize all buffer */ rand_buf(key, key_len); @@ -127,6 +127,7 @@ static int _lib_test_aes_run(struct unit_test_state *uts, int key_len, ret = -1; }; + out: /* Free all the data */ free(key); free(key_exp);