From 80713a93debbd34e2a5a0e2507d30c61a2380823 Mon Sep 17 00:00:00 2001 From: Marcin Wisnicki Date: Mon, 28 May 2012 00:32:10 -0600 Subject: [PATCH] Bug 3545: FreeBSD dnsserver segfaults --- src/dnsserver.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/dnsserver.cc b/src/dnsserver.cc index 6ad1771176..e2ba764a01 100644 --- a/src/dnsserver.cc +++ b/src/dnsserver.cc @@ -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) */ -- 2.47.2