about summary refs log tree commit diff
path: root/sysdeps/posix
diff options
context:
space:
mode:
authorDmitry Bilunov <kmeaw@kmeaw.com>2017-06-24 16:49:34 +0200
committerFlorian Weimer <fweimer@redhat.com>2017-06-24 16:50:42 +0200
commit5cf88a83f27b0cd2d5a83511930e40d716c939eb (patch)
tree9c77735fa268ca633b8557ce497ee9c8f59d5d8f /sysdeps/posix
parent388b4f1a02f3a801965028bbfcd48d905638b797 (diff)
downloadglibc-5cf88a83f27b0cd2d5a83511930e40d716c939eb.tar.gz
glibc-5cf88a83f27b0cd2d5a83511930e40d716c939eb.tar.xz
glibc-5cf88a83f27b0cd2d5a83511930e40d716c939eb.zip
getaddrinfo: Merge IPv6 addresses and IPv4 addresses [BZ #21295]
Diffstat (limited to 'sysdeps/posix')
-rw-r--r--sysdeps/posix/getaddrinfo.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 4ec17961ad..91e0a76c5c 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -190,16 +190,16 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp,
 
 /* Convert struct hostent to a list of struct gaih_addrtuple objects.
    h_name is not copied, and the struct hostent object must not be
-   deallocated prematurely.  *RESULT must be NULL or a pointer to an
-   object allocated using malloc, which is freed.  */
+   deallocated prematurely.  *RESULT must be NULL or a pointer to a
+   linked-list.  The new addresses are appended at the end.  */
 static bool
 convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
 				   int family,
 				   struct hostent *h,
 				   struct gaih_addrtuple **result)
 {
-  free (*result);
-  *result = NULL;
+  while (*result)
+    result = &(*result)->next;
 
   /* Count the number of addresses in h->h_addr_list.  */
   size_t count = 0;