summaryrefslogtreecommitdiff
path: root/security/nss/lib/softoken/pcertdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'security/nss/lib/softoken/pcertdb.c')
-rw-r--r--security/nss/lib/softoken/pcertdb.c8
1 files changed, 7 insertions, 1 deletions
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);
}