Fix a memleak in tls13_generate_secret.
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Mon, 12 Jun 2017 17:30:10 +0000 (19:30 +0200)
committerRich Salz <rsalz@openssl.org>
Mon, 12 Jun 2017 19:15:04 +0000 (15:15 -0400)
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3660)

ssl/tls13_enc.c

index 27634753824d1966cd84cfe28fb42f5293ee8f8f..bc1995e21f392c5382b2dbabb98b98d3213bc49b 100644 (file)
@@ -148,6 +148,7 @@ int tls13_generate_secret(SSL *s, const EVP_MD *md,
                 || EVP_DigestInit_ex(mctx, md, NULL) <= 0
                 || EVP_DigestFinal_ex(mctx, hash, NULL) <= 0) {
             EVP_MD_CTX_free(mctx);
+            EVP_PKEY_CTX_free(pctx);
             return 0;
         }
         EVP_MD_CTX_free(mctx);
@@ -156,8 +157,10 @@ int tls13_generate_secret(SSL *s, const EVP_MD *md,
         if (!tls13_hkdf_expand(s, md, prevsecret,
                                (unsigned char *)derived_secret_label,
                                sizeof(derived_secret_label) - 1, hash,
-                               preextractsec, mdlen))
+                               preextractsec, mdlen)) {
+            EVP_PKEY_CTX_free(pctx);
             return 0;
+        }
 
         prevsecret = preextractsec;
         prevsecretlen = mdlen;