X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fevp%2Fdigest.c;h=1457a001185d8f6910d9f82ea2fed36cef39730f;hp=5c5b118486319601bcdb42e61184e3396f7753ff;hb=e19ea55783bc3e1af5bc6a51775ed41b638aab10;hpb=8716dbea40e80bc495624d37fe883a57103d45f0 diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c index 5c5b118486..1457a00118 100644 --- a/crypto/evp/digest.c +++ b/crypto/evp/digest.c @@ -84,7 +84,8 @@ int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type) { if(ctx->digest != type) { - OPENSSL_free(ctx->md_data); + if(ctx->md_data != NULL) + OPENSSL_free(ctx->md_data); ctx->digest=type; #ifdef CRYPTO_MDEBUG ctx->md_data=CRYPTO_malloc(type->ctx_size,file,line); @@ -155,9 +156,10 @@ int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx) * because sometimes only copies of the context are ever finalised. */ if(ctx->md_data) - memset(ctx->md_data,0,ctx->digest->ctx_size); - - OPENSSL_free(ctx->md_data); + { + memset(ctx->md_data,0,ctx->digest->ctx_size); + OPENSSL_free(ctx->md_data); + } memset(ctx,'\0',sizeof *ctx); return 1;