From 0c3704935d4ee1e8fa3212fcee0a3a2751a36829 Mon Sep 17 00:00:00 2001 From: serassio <> Date: Tue, 6 Jun 2006 00:35:02 +0000 Subject: [PATCH] Bug #1559: asnAddNet() might leak memory Forward port of 2.6 patch. --- src/asn.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/asn.cc b/src/asn.cc index eff7653555..3c78859972 100644 --- a/src/asn.cc +++ b/src/asn.cc @@ -1,6 +1,6 @@ /* - * $Id: asn.cc,v 1.108 2006/05/29 00:15:01 robertc Exp $ + * $Id: asn.cc,v 1.109 2006/06/05 18:35:02 serassio Exp $ * * DEBUG: section 53 AS Number handling * AUTHOR: Duane Wessels, Kostas Anagnostakis @@ -395,7 +395,7 @@ asStateFree(void *data) static int asnAddNet(char *as_string, int as_number) { - rtentry_t *e = (rtentry_t *)xmalloc(sizeof(rtentry_t)); + rtentry_t *e; struct squid_radix_node *rn; char dbg1[32], dbg2[32]; @@ -440,6 +440,8 @@ asnAddNet(char *as_string, int as_number) /*mask = ntohl(mask); */ debug(53, 3) ("asnAddNet: called for %s/%s\n", dbg1, dbg2); + e = (rtentry_t *)xmalloc(sizeof(rtentry_t)); + memset(e, '\0', sizeof(rtentry_t)); store_m_int(addr, e->e_addr); @@ -476,7 +478,9 @@ asnAddNet(char *as_string, int as_number) e->e_info = asinfo; } - if (rn == 0) { + if (rn == 0) { /* assert might expand to nothing */ + xfree(asinfo); + delete q; xfree(e); debug(53, 3) ("asnAddNet: Could not add entry.\n"); return 0; -- 2.47.2