Selaa lähdekoodia

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 <philippe.reynes@softathome.com>
Philippe Reynes 4 vuotta sitten
vanhempi
commit
58b209cf60
1 muutettua tiedostoa jossa 7 lisäystä ja 6 poistoa
  1. 7 6
      test/lib/test_aes.c

+ 7 - 6
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);