From: Augie Fackler Date: Wed, 29 Apr 2009 21:56:08 GMT Subject: Re: [PATCH] Workaround for ai_canonname sometimes coming back as null Message-ID: <6B7EA51D-8412-4E6A-BA7B-156FD5B755E8@gmail.com> In-Reply-To: <81b0412b0904291455n47f83e9ftcbdec0ff1c0ea03@mail.gmail.com> On Apr 29, 2009, at 4:55 PM, Alex Riesen wrote: > 2009/4/29 Augie Fackler : >> @@ -459,7 +459,10 @@ static void parse_extra_args(char *extra_args, >> int >> buflen) >> inet_ntop(AF_INET, &sin_addr- >> >sin_addr, >> addrbuf, sizeof(addrbuf)); >> free(canon_hostname); >> - canon_hostname = xstrdup(ai- >> >ai_canonname); >> + if (ai->ai_canonname) >> + canon_hostname = >> xstrdup(ai->ai_canonname); >> + else >> + canon_hostname = "unknown"; > > This last line will crash some lines down, when canon_hostname is > free'd: > > inet_ntop(hent->h_addrtype, &sa.sin_addr, > addrbuf, sizeof(addrbuf)); > > free(canon_hostname); /* CRASH */ > canon_hostname = xstrdup(hent->h_name); > free(ip_address); Odd, because I'm running with that exact code and not seeing the problem. Should I resubmit an updated patch that xstrdup's unknown into canon_hostname?