From: Matt Caswell Date: Mon, 22 Aug 2016 22:18:50 +0000 (+0100) Subject: Fix mem leak on error path X-Git-Tag: OpenSSL_1_1_0~76 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c72b8e069de6a8863123d5be05e41b833abe09ee;p=openssl Fix mem leak on error path The mem pointed to by tmp can be leaked on an error path. Reviewed-by: Tim Hudson --- diff --git a/crypto/srp/srp_lib.c b/crypto/srp/srp_lib.c index 7f297be81a..9efad9352f 100644 --- a/crypto/srp/srp_lib.c +++ b/crypto/srp/srp_lib.c @@ -19,7 +19,7 @@ static BIGNUM *srp_Calc_k(const BIGNUM *N, const BIGNUM *g) /* k = SHA1(N | PAD(g)) -- tls-srp draft 8 */ unsigned char digest[SHA_DIGEST_LENGTH]; - unsigned char *tmp; + unsigned char *tmp = NULL; EVP_MD_CTX *ctxt = NULL; int longg; int longN = BN_num_bytes(N); @@ -45,12 +45,12 @@ static BIGNUM *srp_Calc_k(const BIGNUM *N, const BIGNUM *g) if (!EVP_DigestUpdate(ctxt, tmp + longg, longN - longg) || !EVP_DigestUpdate(ctxt, tmp, longg)) goto err; - OPENSSL_free(tmp); if (!EVP_DigestFinal_ex(ctxt, digest, NULL)) goto err; res = BN_bin2bn(digest, sizeof(digest), NULL); err: + OPENSSL_free(tmp); EVP_MD_CTX_free(ctxt); return res; }