test: aes: fix memleak
authorPhilippe Reynes <philippe.reynes@softathome.com>
Thu, 6 Feb 2020 16:12:59 +0000 (17:12 +0100)
committerTom Rini <trini@konsulko.com>
Thu, 13 Feb 2020 15:10:50 +0000 (10:10 -0500)
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 <philippe.reynes@softathome.com>
test/lib/test_aes.c

index b7b4b77..fb8a0b1 100644 (file)
@@ -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);