mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
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>
This commit is contained in:
parent
58fc2b54f5
commit
58b209cf60
1 changed files with 7 additions and 6 deletions
|
@ -88,17 +88,17 @@ static int _lib_test_aes_run(struct unit_test_state *uts, int key_len,
|
||||||
|
|
||||||
/* Allocate all the buffer */
|
/* Allocate all the buffer */
|
||||||
key = malloc(key_len);
|
key = malloc(key_len);
|
||||||
ut_assertnonnull(key);
|
|
||||||
key_exp = malloc(key_exp_len);
|
key_exp = malloc(key_exp_len);
|
||||||
ut_assertnonnull(key_exp);
|
|
||||||
iv = malloc(AES_BLOCK_LENGTH);
|
iv = malloc(AES_BLOCK_LENGTH);
|
||||||
ut_assertnonnull(iv);
|
|
||||||
nocipher = malloc(num_block * AES_BLOCK_LENGTH);
|
nocipher = malloc(num_block * AES_BLOCK_LENGTH);
|
||||||
ut_assertnonnull(nocipher);
|
|
||||||
ciphered = malloc((num_block + 1) * AES_BLOCK_LENGTH);
|
ciphered = malloc((num_block + 1) * AES_BLOCK_LENGTH);
|
||||||
ut_assertnonnull(ciphered);
|
|
||||||
uncipher = malloc((num_block + 1) * AES_BLOCK_LENGTH);
|
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 */
|
/* Initialize all buffer */
|
||||||
rand_buf(key, key_len);
|
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;
|
ret = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
out:
|
||||||
/* Free all the data */
|
/* Free all the data */
|
||||||
free(key);
|
free(key);
|
||||||
free(key_exp);
|
free(key_exp);
|
||||||
|
|
Loading…
Reference in a new issue