bug 135871, CERT_ImportCerts not storing temp certs
r=relyea (Tag: NSS_3_4_BRANCH)
--- a/security/nss/lib/certdb/certdb.c
+++ b/security/nss/lib/certdb/certdb.c
@@ -2023,18 +2023,27 @@ CERT_ImportCerts(CERTCertDBHandle *certd
if ( ncerts ) {
certs = (CERTCertificate**)PORT_ZAlloc(sizeof(CERTCertificate *) * ncerts );
if ( certs == NULL ) {
return(SECFailure);
}
/* decode all of the certs into the temporary DB */
for ( i = 0, fcerts= 0; i < ncerts; i++) {
- certs[fcerts] = CERT_DecodeDERCertificate(derCerts[i], PR_FALSE,
- NULL);
+ if ( keepCerts ) {
+ certs[fcerts] = CERT_DecodeDERCertificate(derCerts[i],
+ PR_FALSE,
+ NULL);
+ } else {
+ certs[fcerts] = CERT_NewTempCertificate(certdb,
+ derCerts[i],
+ NULL,
+ PR_FALSE,
+ PR_TRUE);
+ }
if (certs[fcerts]) fcerts++;
}
if ( keepCerts ) {
for ( i = 0; i < fcerts; i++ ) {
SECKEY_UpdateCertPQG(certs[i]);
if(CERT_IsCACert(certs[i], NULL) && (fcerts > 1)) {
/* if we are importing only a single cert and specifying