Message ID | 1622467801-30957-1-git-send-email-herbert.tencent@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | crypto: sm2 - fix a memory leak in sm2 | expand |
On Mon, May 31, 2021 at 09:30:01PM +0800, Hongbo Li wrote: > From: Hongbo Li <herberthbli@tencent.com> > > 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 <herberthbli@tencent.com> > Reviewed-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > --- > 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>
Hi Hongbo, On 5/31/21 9:30 PM, Hongbo Li wrote: > From: Hongbo Li <herberthbli@tencent.com> > > 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 <herberthbli@tencent.com> > Reviewed-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > --- > 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 <herberthbli@tencent.com> Cc: stable@vger.kernel.org # v5.10+ Reviewed-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> Thanks, Tianjia
Hi Tianjia, Tianjia Zhang <tianjia.zhang@linux.alibaba.com> 于2021年6月1日周二 上午10:54写道: > > Hi Hongbo, > > On 5/31/21 9:30 PM, Hongbo Li wrote: > > From: Hongbo Li <herberthbli@tencent.com> > > > > 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 <herberthbli@tencent.com> > > Reviewed-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > > --- > > 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 <herberthbli@tencent.com> > Cc: stable@vger.kernel.org # v5.10+ > Reviewed-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > > Thanks, > Tianjia Thank you, I will resend the patch. Hongbo
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; }