EVP: NULL pctx pointer after free.
authorPauli <paul.dale@oracle.com>
Wed, 26 Aug 2020 04:36:50 +0000 (14:36 +1000)
committerPauli <paul.dale@oracle.com>
Thu, 27 Aug 2020 03:43:46 +0000 (13:43 +1000)
Not doing so can result in a double free.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12718)

crypto/evp/digest.c

index f9ba59ca6352b7f356aae3aa390734667354c9d8..c9b4e3fd6e35771ab1a8e534d8b5354dcc129715 100644 (file)
@@ -34,8 +34,10 @@ int EVP_MD_CTX_reset(EVP_MD_CTX *ctx)
      * pctx should be freed by the user of EVP_MD_CTX
      * if EVP_MD_CTX_FLAG_KEEP_PKEY_CTX is set
      */
-    if (!EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_KEEP_PKEY_CTX))
+    if (!EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_KEEP_PKEY_CTX)) {
         EVP_PKEY_CTX_free(ctx->pctx);
+        ctx->pctx = NULL;
+    }
 #endif
 
     EVP_MD_free(ctx->fetched_digest);