From ae30da69956973e2c1c478078aea76ba3b09ad8c Mon Sep 17 00:00:00 2001 From: Hao Fang Date: Sat, 25 Nov 2023 16:13:24 +0800 Subject: [PATCH 73/82] uadk_engine: rsa: fix mem leak for from_buf If flen > num_bytes, need to free from_buf. Signed-off-by: Hao Fang --- src/uadk_rsa.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/uadk_rsa.c b/src/uadk_rsa.c index fa4d354..1289fd3 100644 --- a/src/uadk_rsa.c +++ b/src/uadk_rsa.c @@ -1491,11 +1491,16 @@ static int uadk_e_rsa_public_encrypt(int flen, const unsigned char *from, } ret = rsa_create_pub_bn_ctx(rsa, pub_enc, &from_buf, &num_bytes); - if (ret <= 0 || flen > num_bytes) { + if (ret <= 0) { ret = UADK_DO_SOFT; goto free_sess; } + if (flen > num_bytes) { + ret = UADK_DO_SOFT; + goto free_buf; + } + ret = add_rsa_pubenc_padding(flen, from, from_buf, num_bytes, padding); if (!ret) { ret = UADK_DO_SOFT; @@ -1756,11 +1761,16 @@ static int uadk_e_rsa_public_verify(int flen, const unsigned char *from, } ret = rsa_create_pub_bn_ctx(rsa, pub, &from_buf, &num_bytes); - if (ret <= 0 || flen > num_bytes) { + if (ret <= 0) { ret = UADK_DO_SOFT; goto free_sess; } + if (flen > num_bytes) { + ret = UADK_DO_SOFT; + goto free_buf; + } + ret = rsa_fill_pubkey(pub, rsa_sess, from_buf, to); if (!ret) { ret = UADK_DO_SOFT; -- 2.25.1