aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2017-06-13 07:22:50 +0200
committerRich Salz <rsalz@openssl.org>2017-06-13 13:27:25 -0400
commit188a9bd950837c70661aa6849894e4e02d129031 (patch)
treed5c73d701bdd8677ad821f606252f7d7bdee7e77
parent150d0478a41e592e1aced6b392db4195eb6191f9 (diff)
downloadopenssl-188a9bd950837c70661aa6849894e4e02d129031.tar.gz
Fix a memleak in ec_copy_parameters.
Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/3666)
-rw-r--r--crypto/ec/ec_ameth.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/crypto/ec/ec_ameth.c b/crypto/ec/ec_ameth.c
index fa5bd0318c..b66adf2bbc 100644
--- a/crypto/ec/ec_ameth.c
+++ b/crypto/ec/ec_ameth.c
@@ -298,17 +298,21 @@ static int ec_missing_parameters(const EVP_PKEY *pkey)
static int ec_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
{
EC_GROUP *group = EC_GROUP_dup(EC_KEY_get0_group(from->pkey.ec));
+
if (group == NULL)
return 0;
if (to->pkey.ec == NULL) {
to->pkey.ec = EC_KEY_new();
if (to->pkey.ec == NULL)
- return 0;
+ goto err;
}
if (EC_KEY_set_group(to->pkey.ec, group) == 0)
- return 0;
+ goto err;
EC_GROUP_free(group);
return 1;
+ err:
+ EC_GROUP_free(group);
+ return 0;
}
static int ec_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)