зеркало из https://github.com/mozilla/gecko-dev.git
Fix for 167856 - memory leaks in CRL cache
This commit is contained in:
Родитель
5df90591e2
Коммит
117e6ec849
|
@ -33,7 +33,7 @@
|
||||||
/*
|
/*
|
||||||
* certi.h - private data structures for the certificate library
|
* certi.h - private data structures for the certificate library
|
||||||
*
|
*
|
||||||
* $Id: certi.h,v 1.5 2002/09/11 00:28:22 jpierre%netscape.com Exp $
|
* $Id: certi.h,v 1.6 2002/09/11 01:08:06 jpierre%netscape.com Exp $
|
||||||
*/
|
*/
|
||||||
#ifndef _CERTI_H_
|
#ifndef _CERTI_H_
|
||||||
#define _CERTI_H_
|
#define _CERTI_H_
|
||||||
|
@ -154,7 +154,6 @@ struct CRLDPCacheStr {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct CRLIssuerCacheStr {
|
struct CRLIssuerCacheStr {
|
||||||
PRUint32 refcount;
|
|
||||||
SECItem* subject; /* DER of issuer subject */
|
SECItem* subject; /* DER of issuer subject */
|
||||||
CRLDPCache dp; /* DER of distribution point */
|
CRLDPCache dp; /* DER of distribution point */
|
||||||
CRLDPCache* dpp;
|
CRLDPCache* dpp;
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
/*
|
/*
|
||||||
* Moved from secpkcs7.c
|
* Moved from secpkcs7.c
|
||||||
*
|
*
|
||||||
* $Id: crl.c,v 1.23 2002/09/11 00:28:22 jpierre%netscape.com Exp $
|
* $Id: crl.c,v 1.24 2002/09/11 01:08:06 jpierre%netscape.com Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "cert.h"
|
#include "cert.h"
|
||||||
|
@ -972,6 +972,16 @@ SECStatus DPCache_Destroy(CRLDPCache* cache)
|
||||||
{
|
{
|
||||||
CERT_DestroyCertificate(cache->issuer);
|
CERT_DestroyCertificate(cache->issuer);
|
||||||
}
|
}
|
||||||
|
/* free the subject */
|
||||||
|
if (cache->subject)
|
||||||
|
{
|
||||||
|
SECITEM_FreeItem(cache->subject, PR_TRUE);
|
||||||
|
}
|
||||||
|
/* free the distribution points */
|
||||||
|
if (cache->distributionPoint)
|
||||||
|
{
|
||||||
|
SECITEM_FreeItem(cache->distributionPoint, PR_TRUE);
|
||||||
|
}
|
||||||
return SECSuccess;
|
return SECSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -982,22 +992,24 @@ SECStatus IssuerCache_Destroy(CRLIssuerCache* cache)
|
||||||
{
|
{
|
||||||
return SECFailure;
|
return SECFailure;
|
||||||
}
|
}
|
||||||
if (!--cache->refcount)
|
|
||||||
{
|
|
||||||
#if 0
|
#if 0
|
||||||
/* XCRL */
|
/* XCRL */
|
||||||
if (cache->lock)
|
if (cache->lock)
|
||||||
{
|
{
|
||||||
NSSRWLock_Destroy(cache->lock);
|
NSSRWLock_Destroy(cache->lock);
|
||||||
}
|
|
||||||
if (cache->issuer)
|
|
||||||
{
|
|
||||||
CERT_DestroyCertificate(cache->issuer);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
DPCache_Destroy(&cache->dp);
|
|
||||||
PR_Free(cache);
|
|
||||||
}
|
}
|
||||||
|
if (cache->issuer)
|
||||||
|
{
|
||||||
|
CERT_DestroyCertificate(cache->issuer);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/* free the subject */
|
||||||
|
if (cache->subject)
|
||||||
|
{
|
||||||
|
SECITEM_FreeItem(cache->subject, PR_TRUE);
|
||||||
|
}
|
||||||
|
DPCache_Destroy(&cache->dp);
|
||||||
|
PR_Free(cache);
|
||||||
return SECSuccess;
|
return SECSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1537,7 +1549,6 @@ SECStatus IssuerCache_Create(CRLIssuerCache** returned,
|
||||||
return SECFailure;
|
return SECFailure;
|
||||||
}
|
}
|
||||||
memset(cache, 0, sizeof(CRLIssuerCache));
|
memset(cache, 0, sizeof(CRLIssuerCache));
|
||||||
cache->refcount = 0;
|
|
||||||
cache->subject = SECITEM_DupItem(subject);
|
cache->subject = SECITEM_DupItem(subject);
|
||||||
#if 0
|
#if 0
|
||||||
/* XCRL */
|
/* XCRL */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче