aboutsummaryrefslogtreecommitdiff
path: root/resolv/nss_dns
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/nss_dns
parent17ad3877276b37af45c380b07b975406cf2e95de (diff)
downloadglibc-ea42a20caed5b343ff20a0d4622ae6c17b77161b.zip
glibc-ea42a20caed5b343ff20a0d4622ae6c17b77161b.tar.gz
glibc-ea42a20caed5b343ff20a0d4622ae6c17b77161b.tar.bz2
Fix crash on reloading of gai data in nscd.
Diffstat (limited to 'resolv/nss_dns')
-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 e0c4978..8592183 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;
}