Bug 366405. Fix PK11_DeleteTokenPrivateKey to not leak the cert when

force is true.  r=alexei.volkov,wtchang


git-svn-id: svn://10.0.0.236/branches/NSS_3_11_BRANCH@218280 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
nelson%bolyard.com
2007-01-13 23:41:21 +00:00
parent 3e03d4c932
commit 487a4aee30

View File

@@ -1671,18 +1671,17 @@ SECStatus
PK11_DeleteTokenPrivateKey(SECKEYPrivateKey *privKey, PRBool force)
{
CERTCertificate *cert=PK11_GetCertFromPrivateKey(privKey);
SECStatus rv = SECWouldBlock;
/* found a cert matching the private key?. */
if (!force && cert != NULL) {
/* yes, don't delete the key */
CERT_DestroyCertificate(cert);
SECKEY_DestroyPrivateKey(privKey);
return SECWouldBlock;
if (!cert || force) {
/* now, then it's safe for the key to go away */
rv = PK11_DestroyTokenObject(privKey->pkcs11Slot,privKey->pkcs11ID);
}
if (cert) {
CERT_DestroyCertificate(cert);
}
/* now, then it's safe for the key to go away */
PK11_DestroyTokenObject(privKey->pkcs11Slot,privKey->pkcs11ID);
SECKEY_DestroyPrivateKey(privKey);
return SECSuccess;
return rv;
}
/*