From 84590bc78f196d35fc8f6bb945ef4ed724a01c4d Mon Sep 17 00:00:00 2001 From: Marc Hoersken Date: Mon, 23 Mar 2015 22:07:39 +0100 Subject: [PATCH] openssl.c: fix possible segfault in case EVP_DigestInit fails --- src/openssl.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/openssl.c b/src/openssl.c index 2e314723..42cee2d1 100644 --- a/src/openssl.c +++ b/src/openssl.c @@ -577,9 +577,10 @@ libssh2_sha1(const unsigned char *message, unsigned long len, EVP_MD_CTX ctx; EVP_MD_CTX_init(&ctx); - EVP_DigestInit(&ctx, EVP_get_digestbyname("sha1")); - EVP_DigestUpdate(&ctx, message, len); - EVP_DigestFinal(&ctx, out, NULL); + if (EVP_DigestInit(&ctx, EVP_get_digestbyname("sha1"))) { + EVP_DigestUpdate(&ctx, message, len); + EVP_DigestFinal(&ctx, out, NULL); + } } int @@ -596,9 +597,10 @@ libssh2_md5(const unsigned char *message, unsigned long len, EVP_MD_CTX ctx; EVP_MD_CTX_init(&ctx); - EVP_DigestInit(&ctx, EVP_get_digestbyname("md5")); - EVP_DigestUpdate(&ctx, message, len); - EVP_DigestFinal(&ctx, out, NULL); + if (EVP_DigestInit(&ctx, EVP_get_digestbyname("md5"))) { + EVP_DigestUpdate(&ctx, message, len); + EVP_DigestFinal(&ctx, out, NULL); + } } static unsigned char *