aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/posix
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-09-06 08:15:50 +0000
committerUlrich Drepper <drepper@redhat.com>2004-09-06 08:15:50 +0000
commitb0d8b23d61009f2681b930c66be595df193b0f55 (patch)
treeb086fe1710ad4e260f8d35ae595a103a455cac6b /sysdeps/posix
parent6029b952a671027cceb9e158ab2e91f7714caf7e (diff)
downloadglibc-b0d8b23d61009f2681b930c66be595df193b0f55.zip
glibc-b0d8b23d61009f2681b930c66be595df193b0f55.tar.gz
glibc-b0d8b23d61009f2681b930c66be595df193b0f55.tar.bz2
(gaih_inet): Fix problem with AF_UNSPEC lookup with AI_CANONNAME of name which has only IPv6 addresses.
Diffstat (limited to 'sysdeps/posix')
-rw-r--r--sysdeps/posix/getaddrinfo.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 3ffa329..17331e5 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -88,6 +88,7 @@ static const struct gaih_servtuple nullserv;
struct gaih_addrtuple
{
struct gaih_addrtuple *next;
+ char *name;
int family;
uint32_t addr[4];
uint32_t scopeid;
@@ -321,6 +322,7 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp,
} \
uint32_t *addr = (*pat)->addr; \
(*pat)->next = NULL; \
+ (*pat)->name = i == 0 ? strdupa (h->h_name) : NULL; \
if (_family == AF_INET && req->ai_family == AF_INET6) \
{ \
(*pat)->family = AF_INET6; \
@@ -658,7 +660,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
char *buf = alloca (max_fqdn_len);
char *s;
- if (DL_CALL_FCT (cfct, (h->h_name ?: name, buf,
+ if (DL_CALL_FCT (cfct, (at->name ?: name, buf,
max_fqdn_len, &s, &rc,
&herrno))
== NSS_STATUS_SUCCESS)