public inbox for libc-stable@sourceware.org
 help / color / mirror / Atom feed
* [2.25 COMMITTED] getaddrinfo: Merge IPv6 addresses and IPv4 addresses [BZ #21295]
@ 2018-01-01  0:00 Florian Weimer
  0 siblings, 0 replies; only message in thread
From: Florian Weimer @ 2018-01-01  0:00 UTC (permalink / raw)
  To: libc-stable

From: Dmitry Bilunov <kmeaw@kmeaw.com>

(cherry picked from commit 5cf88a83f27b0cd2d5a83511930e40d716c939eb)

2017-06-24  Dmitry Bilunov  <kmeaw@kmeaw.com>

	[BZ #21295]
	* sysdeps/posix/getaddrinfo.c (convert_hostent_to_gaih_addrtuple):
	Append addresses at the end of the list.

diff --git a/NEWS b/NEWS
index 38bb008b06..6bb7dfcf42 100644
--- a/NEWS
+++ b/NEWS
@@ -50,6 +50,7 @@ The following bugs are resolved with this release:
   [21242] assert: Suppress pedantic warning caused by statement expression
   [21265] x86-64: Use fxsave/xsave/xsavec in _dl_runtime_resolve
   [21289] Fix symbol redirect for fts_set
+  [21295] getaddrinfo: Merge IPv6 addresses and IPv4 addresses
   [21298] rwlock can deadlock on frequent reader/writer phase switching
   [21359] resolv: Support an exactly sized buffer in ns_name_pack
   [21386] Assertion in fork for distinct parent PID is incorrect
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 611abc2338..ceb1e0b024 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;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-01-04 12:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-01  0:00 [2.25 COMMITTED] getaddrinfo: Merge IPv6 addresses and IPv4 addresses [BZ #21295] Florian Weimer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).