diff options
author | Pauli <pauli@openssl.org> | 2021-12-13 12:16:18 +1100 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2021-12-17 14:39:20 +1100 |
commit | ad2fcee1632d3f21a37e8e108d4c0dcf9099686d (patch) | |
tree | ff4236fc124d60ff1b800477c2fc98a8ff6e05c6 | |
parent | dd2fcc1f7c44c5fb5aa2d33aecdc699c7018ce01 (diff) |
evp: address a use after free state when using HMAC and MD copy.
Fixes #17261
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17263)
-rw-r--r-- | crypto/evp/digest.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c index 7ebb2e3235..322cfe7646 100644 --- a/crypto/evp/digest.c +++ b/crypto/evp/digest.c @@ -521,7 +521,7 @@ int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in) if (out->fetched_digest != NULL) EVP_MD_free(out->fetched_digest); *out = *in; - return 1; + goto clone_pkey; } if (in->digest->prov == NULL @@ -552,6 +552,7 @@ int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in) } } + clone_pkey: /* copied EVP_MD_CTX should free the copied EVP_PKEY_CTX */ EVP_MD_CTX_clear_flags(out, EVP_MD_CTX_FLAG_KEEP_PKEY_CTX); #ifndef FIPS_MODULE |