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 */
|
||||
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);
|
||||
|
|
Loading…
Reference in a new issue