diff options
author | Matt Caswell <matt@openssl.org> | 2016-03-14 17:06:19 +0000 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2016-03-18 11:42:19 +0000 |
commit | e78dc7e279ed98e1ab9845a70d14dafdfdc88f58 (patch) | |
tree | 3949fd4de65b08de5b0d444949efe0ce7229d1a8 /crypto/evp | |
parent | 4256957570a233ed4e9840353e95e623dfd62086 (diff) |
Fix a potential double free in EVP_DigestInit_ex
There is a potential double free in EVP_DigestInit_ex. This is believed
to be reached only as a result of programmer error - but we should fix it
anyway.
Issue reported by Guido Vranken.
Reviewed-by: Richard Levitte <levitte@openssl.org>
(cherry picked from commit ffe9150b1508a0ffc9e724f975691f24eb045c05)
Diffstat (limited to 'crypto/evp')
-rw-r--r-- | crypto/evp/digest.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c index f2643f3248..5b642b23fc 100644 --- a/crypto/evp/digest.c +++ b/crypto/evp/digest.c @@ -212,8 +212,10 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl) } #endif if (ctx->digest != type) { - if (ctx->digest && ctx->digest->ctx_size) + if (ctx->digest && ctx->digest->ctx_size) { OPENSSL_free(ctx->md_data); + ctx->md_data = NULL; + } ctx->digest = type; if (!(ctx->flags & EVP_MD_CTX_FLAG_NO_INIT) && type->ctx_size) { ctx->update = type->update; |