summaryrefslogtreecommitdiff
path: root/resolv
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2010-04-09 21:38:20 -0700
committerPetr Baudis <pasky@ucw.cz>2010-05-12 03:21:17 +0200
commit39879d17a46e063c674ecf5532cb8c1f49fc7277 (patch)
tree3b8faed42a022c2380908d03deb220cd1dffcb17 /resolv
parent1aa9c16a2a1b297b31793b99cc3d5d67e720edb2 (diff)
Fix crash on reloading of gai data in nscd.
(cherry picked from commit ea42a20caed5b343ff20a0d4622ae6c17b77161b)
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;
}