summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-03-11 15:41:52 +0000
committerMatt Caswell <matt@openssl.org>2015-03-12 09:29:48 +0000
commitff2459b91877959bc1a3a8a927c6b5f473530f86 (patch)
treef987bd98de08aef712d9dc88a1f554d5ecdd3661
parent8944d10e2d444b7fc5e60d4f13644c6648f49e74 (diff)
Fix EVP_DigestInit_ex with NULL digest
Calling EVP_DigestInit_ex which has already had the digest set up for it should be possible. You are supposed to be able to pass NULL for the type. However currently this seg faults. Reviewed-by: Andy Polyakov <appro@openssl.org> (cherry picked from commit a01087027bd0c5ec053d4eabd972bd942bfcd92f)
-rw-r--r--crypto/evp/digest.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c
index bd7760d0c9..f2643f3248 100644
--- a/crypto/evp/digest.c
+++ b/crypto/evp/digest.c
@@ -203,9 +203,12 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
ctx->engine = impl;
} else
ctx->engine = NULL;
- } else if (!ctx->digest) {
- EVPerr(EVP_F_EVP_DIGESTINIT_EX, EVP_R_NO_DIGEST_SET);
- return 0;
+ } else {
+ if (!ctx->digest) {
+ EVPerr(EVP_F_EVP_DIGESTINIT_EX, EVP_R_NO_DIGEST_SET);
+ return 0;
+ }
+ type = ctx->digest;
}
#endif
if (ctx->digest != type) {