summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>2003-07-10 01:25:57 +0000
committerwtc%netscape.com <devnull@localhost>2003-07-10 01:25:57 +0000
commit0d7be79b51a0704216db61b027bb2caec1aae432 (patch)
tree933f19dbe15948a52dba9c8f0497439cd4045f74
parent0808f351e8a0523d0a5e28e02c15850f606419f1 (diff)
downloadnss-hg-0d7be79b51a0704216db61b027bb2caec1aae432.tar.gz
Bug 212112: we don't need to lock td->cache->lock while calling
STAN_ForceCERTCertificateUpdate. This fixed a recursive deadlock. r=mcgreer. Tag: NSS_3_8_BRANCH
-rw-r--r--security/nss/lib/pki/tdcache.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/security/nss/lib/pki/tdcache.c b/security/nss/lib/pki/tdcache.c
index 1f1d3fa97..c9fd8012f 100644
--- a/security/nss/lib/pki/tdcache.c
+++ b/security/nss/lib/pki/tdcache.c
@@ -488,11 +488,15 @@ nssTrustDomain_RemoveTokenCertsFromCache (
for (i=0; i<dtor.numCerts; i++) {
if (dtor.certs[i]->object.numInstances == 0) {
nssTrustDomain_RemoveCertFromCacheLOCKED(td, dtor.certs[i]);
- } else {
- STAN_ForceCERTCertificateUpdate(dtor.certs[i]);
+ dtor.certs[i] = NULL; /* skip this cert in the second for loop */
}
}
PZ_Unlock(td->cache->lock);
+ for (i=0; i<dtor.numCerts; i++) {
+ if (dtor.certs[i]) {
+ STAN_ForceCERTCertificateUpdate(dtor.certs[i]);
+ }
+ }
nss_ZFreeIf(dtor.certs);
return PR_SUCCESS;
}