diff options
Diffstat (limited to 'security/nss/lib/softoken/pcertdb.c')
-rw-r--r-- | security/nss/lib/softoken/pcertdb.c | 8 |
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); } |