summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrelyea%netscape.com <devnull@localhost>2002-01-24 00:26:29 +0000
committerrelyea%netscape.com <devnull@localhost>2002-01-24 00:26:29 +0000
commit378f415099bfe36eef5e51c9654b8a1604ba549b (patch)
treecfb89c9d308704cd078d16fc139044d2e1078d61
parent1b949453c38f73fe4633a73bb2c00c3c0693341f (diff)
downloadnss-hg-378f415099bfe36eef5e51c9654b8a1604ba549b.tar.gz
Fix memory leaks.
-rw-r--r--security/nss/lib/pki/certificate.c3
-rw-r--r--security/nss/lib/pki/pki3hack.c1
-rw-r--r--security/nss/lib/softoken/pcertdb.c8
3 files changed, 10 insertions, 2 deletions
diff --git a/security/nss/lib/pki/certificate.c b/security/nss/lib/pki/certificate.c
index b2ee23bd4..44dbfe4f0 100644
--- a/security/nss/lib/pki/certificate.c
+++ b/security/nss/lib/pki/certificate.c
@@ -306,7 +306,8 @@ NSSCertificate_BuildChain
issuerID = dc->getIssuerIdentifier(dc);
if (issuerID) {
c = find_issuer_cert_for_identifier(c, issuerID);
- nss_ZFreeIf(issuerID);
+ nssItem_Destroy(issuerID);
+ issuerID = NULL;
if (!c) {
nss_SetError(NSS_ERROR_CERTIFICATE_ISSUER_NOT_FOUND);
if (statusOpt) *statusOpt = PR_FAILURE;
diff --git a/security/nss/lib/pki/pki3hack.c b/security/nss/lib/pki/pki3hack.c
index 1315bf444..4a568e035 100644
--- a/security/nss/lib/pki/pki3hack.c
+++ b/security/nss/lib/pki/pki3hack.c
@@ -352,6 +352,7 @@ nss3certificate_getDERSerialNumber(nssDecodedCert *dc,
secrv = CERT_SerialNumberFromDERCert(&cc->derCert, &derSerial);
if (secrv == SECSuccess) {
(void)nssItem_Create(arena, serial, derSerial.len, derSerial.data);
+ PORT_Free(derSerial.data);
return PR_SUCCESS;
}
return PR_FAILURE;
diff --git a/security/nss/lib/softoken/pcertdb.c b/security/nss/lib/softoken/pcertdb.c
index 8af3f83a8..89cb261c6 100644
--- a/security/nss/lib/softoken/pcertdb.c
+++ b/security/nss/lib/softoken/pcertdb.c
@@ -2439,7 +2439,7 @@ UpdateSubjectWithEmailAddr(NSSLOWCERTCertDBHandle *dbhandle,
SECItem *derSubject, char *emailAddr)
{
PRBool save = PR_FALSE, delold = PR_FALSE;
- certDBEntrySubject *entry;
+ certDBEntrySubject *entry = NULL;
SECStatus rv;
if (emailAddr) {
@@ -2450,6 +2450,9 @@ UpdateSubjectWithEmailAddr(NSSLOWCERTCertDBHandle *dbhandle,
}
entry = ReadDBSubjectEntry(dbhandle,derSubject);
+ if (entry == NULL) {
+ goto loser;
+ }
if ( entry->emailAddr ) {
if ( (emailAddr == NULL) ||
@@ -2495,10 +2498,12 @@ UpdateSubjectWithEmailAddr(NSSLOWCERTCertDBHandle *dbhandle,
}
}
+ DestroyDBEntry((certDBEntry *)entry);
if (emailAddr) PORT_Free(emailAddr);
return(SECSuccess);
loser:
+ if (entry) DestroyDBEntry((certDBEntry *)entry);
if (emailAddr) PORT_Free(emailAddr);
return(SECFailure);
}
@@ -2845,6 +2850,7 @@ AddPermSubjectNode(certDBEntrySubject *entry, NSSLOWCERTCertificate *cert,
}
DeleteDBSubjectEntry(cert->dbhandle, &cert->derSubject);
rv = WriteDBSubjectEntry(cert->dbhandle, entry);
+ DestroyDBEntry((certDBEntry *)entry);
return(rv);
}