fix another potential double free
authorjsg <jsg@openbsd.org>
Fri, 18 Apr 2014 03:28:12 +0000 (03:28 +0000)
committerjsg <jsg@openbsd.org>
Fri, 18 Apr 2014 03:28:12 +0000 (03:28 +0000)
ok miod@ lteo@ jca@

lib/libcrypto/pkcs7/pk7_doit.c
lib/libssl/src/crypto/pkcs7/pk7_doit.c

index 396a863..fbe58cd 100644 (file)
@@ -928,6 +928,7 @@ int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si)
        if (EVP_DigestSignUpdate(&mctx,abuf,alen) <= 0)
                goto err;
        free(abuf);
+       abuf = NULL;
        if (EVP_DigestSignFinal(&mctx, NULL, &siglen) <= 0)
                goto err;
        abuf = malloc(siglen);
@@ -950,8 +951,7 @@ int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si)
        return 1;
 
        err:
-       if (abuf)
-               free(abuf);
+       free(abuf);
        EVP_MD_CTX_cleanup(&mctx);
        return 0;
 
index 396a863..fbe58cd 100644 (file)
@@ -928,6 +928,7 @@ int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si)
        if (EVP_DigestSignUpdate(&mctx,abuf,alen) <= 0)
                goto err;
        free(abuf);
+       abuf = NULL;
        if (EVP_DigestSignFinal(&mctx, NULL, &siglen) <= 0)
                goto err;
        abuf = malloc(siglen);
@@ -950,8 +951,7 @@ int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si)
        return 1;
 
        err:
-       if (abuf)
-               free(abuf);
+       free(abuf);
        EVP_MD_CTX_cleanup(&mctx);
        return 0;