]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 3545: FreeBSD dnsserver segfaults
authorMarcin Wisnicki <mwisnicki@gmail.com>
Mon, 14 May 2012 02:40:12 +0000 (20:40 -0600)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 14 May 2012 02:40:12 +0000 (20:40 -0600)
src/dnsserver.cc

index 6ad1771176328fe4c2c4ff34b7d9a2b0ced56811..e2ba764a01447bce84585f1f4c752ddf262e27ff 100644 (file)
@@ -194,8 +194,10 @@ lookup(const char *buf)
     const bool isDomain = (getaddrinfo(buf,NULL,&hints,&AI) != 0);
 
     // reset for real lookup
-    freeaddrinfo(AI);
-    AI = NULL;
+    if (AI != NULL) {
+        freeaddrinfo(AI);
+        AI = NULL;
+    }
 
     // resolve the address/name
     memset(&hints, '\0', sizeof(struct addrinfo));
@@ -331,7 +333,8 @@ lookup(const char *buf)
         printf("$fail A system error occured looking up Domain/IP '%s': %s.\n", buf, gai_strerror(res));
     }
 
-    freeaddrinfo(AI);
+    if (AI != NULL)
+        freeaddrinfo(AI);
 }
 
 /**
@@ -432,7 +435,8 @@ squid_res_setservers(int reset)
         fprintf(stderr, "IPv6 nameservers not supported on this resolver\n");
 #endif
     }
-    freeaddrinfo(AI);
+    if (AI != NULL)
+        freeaddrinfo(AI);
 
 #else /* !HAVE_RES_INIT || !defined(_SQUID_RES_NSADDR_LIST) */