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:
@@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user