From: Bernd Edlinger Date: Tue, 13 Jun 2017 05:22:50 +0000 (+0200) Subject: Fix a memleak in ec_copy_parameters. X-Git-Tag: OpenSSL_1_1_1-pre1~1321 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=188a9bd950837c70661aa6849894e4e02d129031;p=oweals%2Fopenssl.git Fix a memleak in ec_copy_parameters. Reviewed-by: Matt Caswell Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/3666) --- 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)