X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/d87e115847b84cc1c3a1ef198a20181cd85b5309..5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1:/libsecurity_smime/lib/cmssiginfo.c?ds=sidebyside diff --git a/libsecurity_smime/lib/cmssiginfo.c b/libsecurity_smime/lib/cmssiginfo.c index cce69553..8fe415b3 100644 --- a/libsecurity_smime/lib/cmssiginfo.c +++ b/libsecurity_smime/lib/cmssiginfo.c @@ -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; }