about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2012-08-22 11:41:40 -0600
committerJeff Law <law@redhat.com>2012-08-22 11:41:40 -0600
commit8479f23aa1d5e5477a37f46823856bdafaedfa46 (patch)
treee4512a6e8ce06db0e40b6ff0caea8af51aa54e0e
parent48da0b21630bb237b40086726f6ecd5bb2e2d988 (diff)
downloadglibc-8479f23aa1d5e5477a37f46823856bdafaedfa46.tar.gz
glibc-8479f23aa1d5e5477a37f46823856bdafaedfa46.tar.xz
glibc-8479f23aa1d5e5477a37f46823856bdafaedfa46.zip
* sysdeps/posix/getaddrinfo.c (gaih_inet): Only use gethostbyname4_r
	if the family is PF_UNSPEC.
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--sysdeps/posix/getaddrinfo.c9
3 files changed, 14 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 656b16893f..5c2aea1b02 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-08-22  Jeff Law <law@redhat.com>
+
+	[BZ #14505]
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Only use gethostbyname4_r
+	if the family is PF_UNSPEC.
+
 2012-08-22  Mike Frysinger  <vapier@gentoo.org>
 
 	* Makerules (lib-version): Rename from V.
diff --git a/NEWS b/NEWS
index 688dc434f6..075d1ba36d 100644
--- a/NEWS
+++ b/NEWS
@@ -61,7 +61,7 @@ Version 2.16
   14043, 14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064, 14075,
   14080, 14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123, 14134,
   14153, 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273, 14277,
-  14278
+  14278, 14505
 
 * Support for the x32 ABI on x86-64 added.  The x32 target is selected by
   configuring glibc with:
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 81e928ab91..05883bd55f 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -832,8 +832,13 @@ gaih_inet (const char *name, const struct gaih_service *service,
 	  while (!no_more)
 	    {
 	      no_data = 0;
-	      nss_gethostbyname4_r fct4
-		= __nss_lookup_function (nip, "gethostbyname4_r");
+	      nss_gethostbyname4_r fct4 = NULL;
+
+	      /* gethostbyname4_r sends out parallel A and AAAA queries and
+		 is thus only suitable for PF_UNSPEC.  */
+	      if (req->ai_family == PF_UNSPEC)
+		fct4 = __nss_lookup_function (nip, "gethostbyname4_r");
+
 	      if (fct4 != NULL)
 		{
 		  int herrno;