summaryrefslogtreecommitdiffstats
path: root/crypto/evp
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:19:24 +0000
commita01087027bd0c5ec053d4eabd972bd942bfcd92f (patch)
tree15dba83fb5d58c761609d77871fd050dde21ddd1 /crypto/evp
parent8c5a7b33c6269c3bd6bc0df6b4c22e4fba03b485 (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>
Diffstat (limited to 'crypto/evp')
-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 db755b1dbb..48c7b00b4c 100644
--- a/crypto/evp/digest.c
+++ b/crypto/evp/digest.c
@@ -187,9 +187,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) {