From dadc39c1fbde26743f72e602cd5a2eadfd0420f1 Mon Sep 17 00:00:00 2001 From: "relyea%netscape.com" Date: Fri, 24 Aug 2001 18:34:34 +0000 Subject: [PATCH] Memory leak fixes. git-svn-id: svn://10.0.0.236/trunk@101757 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/security/nss/lib/util/secasn1d.c | 14 ++++++++++++-- mozilla/security/nss/lib/util/secoid.c | 17 +++++++++++++++++ mozilla/security/nss/lib/util/secoid.h | 7 ++++++- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/mozilla/security/nss/lib/util/secasn1d.c b/mozilla/security/nss/lib/util/secasn1d.c index 5b1d9da97d9..618bcc3dd0b 100644 --- a/mozilla/security/nss/lib/util/secasn1d.c +++ b/mozilla/security/nss/lib/util/secasn1d.c @@ -35,7 +35,7 @@ * Support for DEcoding ASN.1 data based on BER/DER (Basic/Distinguished * Encoding Rules). * - * $Id: secasn1d.c,v 1.8 2001-05-09 22:40:22 kirke%netscape.com Exp $ + * $Id: secasn1d.c,v 1.9 2001-08-24 18:34:33 relyea%netscape.com Exp $ */ #include "secasn1.h" @@ -1349,9 +1349,19 @@ sec_asn1d_parse_bit_string (sec_asn1d_state *state, { unsigned char byte; - PORT_Assert (state->pending > 0); + /*PORT_Assert (state->pending > 0); */ PORT_Assert (state->place == beforeBitString); + if (state->pending == 0) { + if (state->dest != NULL) { + SECItem *item = (SECItem *)(state->dest); + item->data = NULL; + item->len = 0; + state->place = beforeEndOfContents; + return 0; + } + } + if (len == 0) { state->top->status = needBytes; return 0; diff --git a/mozilla/security/nss/lib/util/secoid.c b/mozilla/security/nss/lib/util/secoid.c index 5675086198a..0044c83f049 100644 --- a/mozilla/security/nss/lib/util/secoid.c +++ b/mozilla/security/nss/lib/util/secoid.c @@ -1531,3 +1531,20 @@ SECOID_FindOIDTagDescription(SECOidTag tagnum) else return oidData->desc; } + +/* + * free up the oid tables. + */ +SECStatus +SECOID_Shutdown(void) +{ + if (oidhash) { + (oidhash->close)(oidhash); + oidhash = NULL; + } + if (oidmechhash) { + (oidmechhash->close)(oidmechhash); + oidmechhash = NULL; + } + return SECSuccess; +} diff --git a/mozilla/security/nss/lib/util/secoid.h b/mozilla/security/nss/lib/util/secoid.h index a6928fd03d8..22eeb61d182 100644 --- a/mozilla/security/nss/lib/util/secoid.h +++ b/mozilla/security/nss/lib/util/secoid.h @@ -36,7 +36,7 @@ /* * secoid.h - public data structures and prototypes for ASN.1 OID functions * - * $Id: secoid.h,v 1.3 2001-05-02 21:34:13 wtc%netscape.com Exp $ + * $Id: secoid.h,v 1.4 2001-08-24 18:34:34 relyea%netscape.com Exp $ */ #include "plarena.h" @@ -109,6 +109,11 @@ extern PRBool SECOID_KnownCertExtenOID (SECItem *extenOid); */ extern const char *SECOID_FindOIDTagDescription(SECOidTag tagnum); +/* + * free up the oid data structures. + */ +extern SECStatus SECOID_Shutdown(void); + SEC_END_PROTOS