Re: [PATCH] Workaround for ai_canonname sometimes coming back as null
- From
Augie Fackler <durin42@gmail.com>
- Date
- Apr 29, 2009, 21:56 UTC
- 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:
Show 25 quoted lines
> 2009/4/29 Augie Fackler <durin42@gmail.com>: >> @@ -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?