summary refs log tree commit diff
path: root/resolv
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2010-04-09 21:38:20 -0700
committerUlrich Drepper <drepper@redhat.com>2010-04-09 21:38:20 -0700
commitea42a20caed5b343ff20a0d4622ae6c17b77161b (patch)
treed4d57d9ea754be4d720e7946b5e439e4cea45505 /resolv
parent17ad3877276b37af45c380b07b975406cf2e95de (diff)
downloadglibc-ea42a20caed5b343ff20a0d4622ae6c17b77161b.tar.gz
glibc-ea42a20caed5b343ff20a0d4622ae6c17b77161b.tar.xz
glibc-ea42a20caed5b343ff20a0d4622ae6c17b77161b.zip
Fix crash on reloading of gai data in nscd.
Diffstat (limited to 'resolv')
-rw-r--r--resolv/nss_dns/dns-host.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
index e0c4978c3b..8592183f62 100644
--- a/resolv/nss_dns/dns-host.c
+++ b/resolv/nss_dns/dns-host.c
@@ -1050,7 +1050,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
 	  ++had_error;
 	  continue;
 	}
-      if (*firstp)
+      if (*firstp && canon == NULL)
 	{
 	  h_name = buffer;
 	  buffer += h_namelen;
@@ -1166,19 +1166,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
 	  if (ttl != 0 && ttlp != NULL)
 	    *ttlp = ttl;
 
-	  if (canon != NULL)
-	    {
-	      (*pat)->name = canon;
-
-	      /* Reclaim buffer space.  */
-	      if (h_name + h_namelen == buffer)
-		{
-		  buffer = h_name;
-		  buflen += h_namelen;
-		}
-	    }
-	  else
-	    (*pat)->name = h_name;
+	  (*pat)->name = canon ?: h_name;
 
 	  *firstp = 0;
 	}