diff options
author | wtc%netscape.com <devnull@localhost> | 2003-07-10 01:25:57 +0000 |
---|---|---|
committer | wtc%netscape.com <devnull@localhost> | 2003-07-10 01:25:57 +0000 |
commit | 0d7be79b51a0704216db61b027bb2caec1aae432 (patch) | |
tree | 933f19dbe15948a52dba9c8f0497439cd4045f74 | |
parent | 0808f351e8a0523d0a5e28e02c15850f606419f1 (diff) | |
download | nss-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.c | 8 |
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; } |