8597553f96
- Support an arbitrary number of search domains (#168253) - Detect and apply /etc/resolv.conf changes in libresolv (#1374239) - CVE-2015-5180: DNS stub resolver crash with crafted record type (#1251403)
32 lines
1.2 KiB
Diff
32 lines
1.2 KiB
Diff
commit 5cf88a83f27b0cd2d5a83511930e40d716c939eb
|
|
Author: Dmitry Bilunov <kmeaw@kmeaw.com>
|
|
Date: Sat Jun 24 16:49:34 2017 +0200
|
|
|
|
getaddrinfo: Merge IPv6 addresses and IPv4 addresses [BZ #21295]
|
|
|
|
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
|
index 4ec17961adb194ff..91e0a76c5cfa027f 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;
|