summaryrefslogtreecommitdiffstats
path: root/crypto/evp
diff options
context:
space:
mode:
authorPauli <paul.dale@oracle.com>2020-08-26 14:36:50 +1000
committerPauli <paul.dale@oracle.com>2020-08-27 13:43:46 +1000
commit625679b6d79296e020bb0cad31d6ac24ad547a39 (patch)
tree96c55f829517aa21c51695802628910ea7a26828 /crypto/evp
parenta149f7502458dc022501c2347629cc847f2e1298 (diff)
EVP: NULL pctx pointer after free.
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)
Diffstat (limited to 'crypto/evp')
-rw-r--r--crypto/evp/digest.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c
index f9ba59ca63..c9b4e3fd6e 100644
--- a/crypto/evp/digest.c
+++ b/crypto/evp/digest.c
@@ -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);