Only OPENSSL_free() non-NULL pointers.
authorGeoff Thorpe <geoff@openssl.org>
Sat, 1 Sep 2001 18:37:17 +0000 (18:37 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Sat, 1 Sep 2001 18:37:17 +0000 (18:37 +0000)
crypto/evp/digest.c

index 5c5b118486319601bcdb42e61184e3396f7753ff..1457a001185d8f6910d9f82ea2fed36cef39730f 100644 (file)
@@ -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;