uadk_engine/0073-uadk_engine-rsa-fix-mem-leak-for-from_buf.patch
2023-11-29 16:35:32 +08:00

56 lines
1.4 KiB
Diff

From ae30da69956973e2c1c478078aea76ba3b09ad8c Mon Sep 17 00:00:00 2001
From: Hao Fang <fanghao11@huawei.com>
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 <fanghao11@huawei.com>
---
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