2021-05-31 13:51:10

by Hongbo Li

[permalink] [raw]
Subject: [PATCH] crypto: sm2 - fix a memory leak in sm2

From: Hongbo Li <[email protected]>

SM2 module alloc ec->Q in sm2_set_pub_key(), when doing alg test in
test_akcipher_one(), it will set public key for every test vector,
and don't free ec->Q. This will cause a memory leak.

This patch alloc ec->Q in sm2_ec_ctx_init().

Fixes: ea7ecb66440b ("crypto: sm2 - introduce OSCCA SM2 asymmetric cipher algorithm")
Signed-off-by: Hongbo Li <[email protected]>
Reviewed-by: Tianjia Zhang <[email protected]>
---
crypto/sm2.c | 24 ++++++++++--------------
1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/crypto/sm2.c b/crypto/sm2.c
index b21addc..db8a4a2 100644
--- a/crypto/sm2.c
+++ b/crypto/sm2.c
@@ -79,10 +79,17 @@ static int sm2_ec_ctx_init(struct mpi_ec_ctx *ec)
goto free;

rc = -ENOMEM;
+
+ ec->Q = mpi_point_new(0);
+ if (!ec->Q)
+ goto free;
+
/* mpi_ec_setup_elliptic_curve */
ec->G = mpi_point_new(0);
- if (!ec->G)
+ if (!ec->G) {
+ mpi_point_release(ec->Q);
goto free;
+ }

mpi_set(ec->G->x, x);
mpi_set(ec->G->y, y);
@@ -91,6 +98,7 @@ static int sm2_ec_ctx_init(struct mpi_ec_ctx *ec)
rc = -EINVAL;
ec->n = mpi_scanval(ecp->n);
if (!ec->n) {
+ mpi_point_release(ec->Q);
mpi_point_release(ec->G);
goto free;
}
@@ -386,27 +394,15 @@ static int sm2_set_pub_key(struct crypto_akcipher *tfm,
MPI a;
int rc;

- ec->Q = mpi_point_new(0);
- if (!ec->Q)
- return -ENOMEM;
-
/* include the uncompressed flag '0x04' */
- rc = -ENOMEM;
a = mpi_read_raw_data(key, keylen);
if (!a)
- goto error;
+ return -ENOMEM;

mpi_normalize(a);
rc = sm2_ecc_os2ec(ec->Q, a);
mpi_free(a);
- if (rc)
- goto error;
-
- return 0;

-error:
- mpi_point_release(ec->Q);
- ec->Q = NULL;
return rc;
}

--
1.8.3.1


2021-05-31 15:02:00

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] crypto: sm2 - fix a memory leak in sm2

On Mon, May 31, 2021 at 09:30:01PM +0800, Hongbo Li wrote:
> From: Hongbo Li <[email protected]>
>
> SM2 module alloc ec->Q in sm2_set_pub_key(), when doing alg test in
> test_akcipher_one(), it will set public key for every test vector,
> and don't free ec->Q. This will cause a memory leak.
>
> This patch alloc ec->Q in sm2_ec_ctx_init().
>
> Fixes: ea7ecb66440b ("crypto: sm2 - introduce OSCCA SM2 asymmetric cipher algorithm")
> Signed-off-by: Hongbo Li <[email protected]>
> Reviewed-by: Tianjia Zhang <[email protected]>
> ---
> crypto/sm2.c | 24 ++++++++++--------------
> 1 file changed, 10 insertions(+), 14 deletions(-)
>

<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree. Please read:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.

</formletter>

2021-06-01 02:55:00

by Tianjia Zhang

[permalink] [raw]
Subject: Re: [PATCH] crypto: sm2 - fix a memory leak in sm2

Hi Hongbo,

On 5/31/21 9:30 PM, Hongbo Li wrote:
> From: Hongbo Li <[email protected]>
>
> SM2 module alloc ec->Q in sm2_set_pub_key(), when doing alg test in
> test_akcipher_one(), it will set public key for every test vector,
> and don't free ec->Q. This will cause a memory leak.
>
> This patch alloc ec->Q in sm2_ec_ctx_init().
>
> Fixes: ea7ecb66440b ("crypto: sm2 - introduce OSCCA SM2 asymmetric cipher algorithm")
> Signed-off-by: Hongbo Li <[email protected]>
> Reviewed-by: Tianjia Zhang <[email protected]>
> ---
> crypto/sm2.c | 24 ++++++++++--------------
> 1 file changed, 10 insertions(+), 14 deletions(-)
>

Just add Cc: to SOB, like this:

Fixes: ea7ecb66440b (...)
Signed-off-by: Hongbo Li <[email protected]>
Cc: [email protected] # v5.10+
Reviewed-by: Tianjia Zhang <[email protected]>

Thanks,
Tianjia

2021-06-03 12:36:30

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH] crypto: sm2 - fix a memory leak in sm2

On Tue, Jun 01, 2021 at 09:05:52PM +0800, Hongbo Li wrote:
> From: Hongbo Li <[email protected]>
>
> SM2 module alloc ec->Q in sm2_set_pub_key(), when doing alg test in
> test_akcipher_one(), it will set public key for every test vector,
> and don't free ec->Q. This will cause a memory leak.
>
> This patch alloc ec->Q in sm2_ec_ctx_init().
>
> Fixes: ea7ecb66440b ("crypto: sm2 - introduce OSCCA SM2 asymmetric cipher algorithm")
> Signed-off-by: Hongbo Li <[email protected]>
> Cc: [email protected] # v5.10+
> Reviewed-by: Tianjia Zhang <[email protected]>
> ---
> crypto/sm2.c | 24 ++++++++++--------------
> 1 file changed, 10 insertions(+), 14 deletions(-)

Your patch has been discarded by patchwork because you didn't
update the Subject. The usual method is to use a version prefix
such as v2, v3, etc. so that the Subject remains distinct.

Please resubmit with a new Subject.

Oh and don't cc [email protected].

Thanks,
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt