return the requested string as the "canonical name" for numeric addresses
authorRich Felker <dalias@aerifal.cx>
Fri, 8 Apr 2011 12:14:28 +0000 (08:14 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 8 Apr 2011 12:14:28 +0000 (08:14 -0400)
previously NULL was returned in ai_canonname, resulting in crashes in
some callers. this behavior was incorrect. note however that the new
behavior differs from glibc, which performs reverse dns lookups. POSIX
is very clear that a reverse DNS lookup must not be performed for
numeric addresses.

src/network/getaddrinfo.c

index 8126236bb05a54efe124b335b70764aeb07061a8..c0f135f31442591435fcdd5f70159f4cef537465 100644 (file)
@@ -117,6 +117,7 @@ int getaddrinfo(const char *host, const char *serv, const struct addrinfo *hint,
                buf->ai.ai_addr = (void *)&buf->sa;
                buf->ai.ai_addrlen = family==AF_INET6 ? sizeof sa.sin6 : sizeof sa.sin;
                buf->ai.ai_family = family;
+               buf->ai.ai_canonname = (char *)host;
                buf->sa = sa;
                buf->sa.sin.sin_port = port;
                *res = &buf->ai;