diff options
Diffstat (limited to 'sysdeps/posix/getaddrinfo.c')
-rw-r--r-- | sysdeps/posix/getaddrinfo.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index 32b050ecf4..90af24fb61 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -287,6 +287,10 @@ static int gaih_inet(const char *name, const struct gaih_service *service, struct gaih_servtuple *st2; struct gaih_addrtuple *at2 = at; int j; +#ifndef MAXHOSTNAMELEN +# define MAXHOSTNAMELEN 128 +#endif /* MAXHOSTNAMELEN */ + char buffer[MAXHOSTNAMELEN]; while(at2) { if (req->ai_flags & AI_CANONNAME) { @@ -308,9 +312,9 @@ static int gaih_inet(const char *name, const struct gaih_service *service, sizeof(struct in_addr), at2->family); #endif /* HOSTTABLE */ - if (!h) { - c = inet_ntop(at2->family, at2->addr, NULL, 0); - } else + if (!h) + c = inet_ntop(at2->family, at2->addr, buffer, sizeof(buffer)); + else c = h->h_name; if (!c) { |