crypto: tcrypt - Fix potential leak in test_aead_speed() if aad_size is too big
Fix a potential memory leak in the error handling of test_aead_speed(). In case the size check on the associate data length parameter fails, the function goes through the wrong exit label. Reported by Coverity - CID 1163870. Signed-off-by: Christian Engelmayer <cengelma@gmx.at> Acked-by: Tim Chen <tim.c.chen@linux.intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
3d67be2761
commit
ac5f863f8c
|
@ -282,6 +282,11 @@ static void test_aead_speed(const char *algo, int enc, unsigned int sec,
|
||||||
unsigned int *b_size;
|
unsigned int *b_size;
|
||||||
unsigned int iv_len;
|
unsigned int iv_len;
|
||||||
|
|
||||||
|
if (aad_size >= PAGE_SIZE) {
|
||||||
|
pr_err("associate data length (%u) too big\n", aad_size);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (enc == ENCRYPT)
|
if (enc == ENCRYPT)
|
||||||
e = "encryption";
|
e = "encryption";
|
||||||
else
|
else
|
||||||
|
@ -323,14 +328,7 @@ static void test_aead_speed(const char *algo, int enc, unsigned int sec,
|
||||||
b_size = aead_sizes;
|
b_size = aead_sizes;
|
||||||
do {
|
do {
|
||||||
assoc = axbuf[0];
|
assoc = axbuf[0];
|
||||||
|
memset(assoc, 0xff, aad_size);
|
||||||
if (aad_size < PAGE_SIZE)
|
|
||||||
memset(assoc, 0xff, aad_size);
|
|
||||||
else {
|
|
||||||
pr_err("associate data length (%u) too big\n",
|
|
||||||
aad_size);
|
|
||||||
goto out_nosg;
|
|
||||||
}
|
|
||||||
sg_init_one(&asg[0], assoc, aad_size);
|
sg_init_one(&asg[0], assoc, aad_size);
|
||||||
|
|
||||||
if ((*keysize + *b_size) > TVMEMSIZE * PAGE_SIZE) {
|
if ((*keysize + *b_size) > TVMEMSIZE * PAGE_SIZE) {
|
||||||
|
|
Loading…
Reference in New Issue