]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_smime/lib/cmssiginfo.c
Security-57031.40.6.tar.gz
[apple/security.git] / libsecurity_smime / lib / cmssiginfo.c
index cce6955355bbdae6ae60987e5d3719d0af0505f2..8fe415b3b12b2d4573e28091f3277e2075301e8f 100644 (file)
@@ -320,7 +320,7 @@ SecCmsSignerInfoSign(SecCmsSignerInfoRef signerinfo, SecAsn1Item * digest, SecAs
     SECOidTag pubkAlgTag;
     SecAsn1Item signature = { 0 };
     OSStatus rv;
-    PLArenaPool *poolp, *tmppoolp;
+    PLArenaPool *poolp, *tmppoolp = NULL;
     const SECAlgorithmID *algID = NULL;
     //CERTSubjectPublicKeyInfo *spki;
 
@@ -444,6 +444,7 @@ SecCmsSignerInfoSign(SecCmsSignerInfoRef signerinfo, SecAsn1Item * digest, SecAs
 #endif
 
        PORT_FreeArena(tmppoolp, PR_FALSE); /* awkward memory management :-( */
+       tmppoolp = 0;
     } else {
         signature.Length = SecKeyGetSize(privkey, kSecKeySignatureSize);
         signature.Data = PORT_ZAlloc(signature.Length);
@@ -481,6 +482,8 @@ loser:
        SECITEM_FreeItem (&signature, PR_FALSE);
     if (privkey)
        SECKEY_DestroyPrivateKey(privkey);
+    if (tmppoolp)
+       PORT_FreeArena(tmppoolp, PR_FALSE);
     return SECFailure;
 }