]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Cleanup: remove some minor memory leaks on config parser self_destruct
authorAmos Jeffries <squid3@treenet.co.nz>
Fri, 5 Aug 2016 22:00:51 +0000 (10:00 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Fri, 5 Aug 2016 22:00:51 +0000 (10:00 +1200)
 Identified by Coverity Scan. ID 13647421364744.

src/acl/Ip.cc

index 370e50a776deafc51e1e02026d2fb9d852bb6887..153bcc6b1eb26d7a69ca72288553813c383d5dbe 100644 (file)
@@ -373,9 +373,9 @@ acl_ip_data::FactoryParse(const char *t)
 
         int errcode = getaddrinfo(addr1,NULL,&hints,&hp);
         if (hp == NULL) {
+            delete q;
             if (strcmp(addr1, "::1") == 0) {
                 debugs(28, DBG_IMPORTANT, "aclIpParseIpData: IPv6 has not been enabled in host DNS resolver.");
-                delete q;
             } else {
                 debugs(28, DBG_CRITICAL, "aclIpParseIpData: Bad host/IP: '" << addr1 <<
                        "' in '" << t << "', flags=" << hints.ai_flags <<
@@ -413,14 +413,14 @@ acl_ip_data::FactoryParse(const char *t)
             debugs(28, 3, "" << addr1 << " --> " << r->addr1 );
         }
 
+        freeaddrinfo(hp);
+
         if (*Q != NULL) {
             debugs(28, DBG_CRITICAL, "aclIpParseIpData: Bad host/IP: '" << t << "'");
             self_destruct();
             return NULL;
         }
 
-        freeaddrinfo(hp);
-
         return q;
     }