]> sourceware.org Git - glibc.git/commitdiff
* resolv/nss_dns/dns-host.c (gaih_getanswer_slice): If there are
authorUlrich Drepper <drepper@redhat.com>
Sat, 17 May 2008 19:54:58 +0000 (19:54 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 17 May 2008 19:54:58 +0000 (19:54 +0000)
no answers return NSS_STATUS_NOTFOUND.
(gaih_getanswer): Don't call gaih_getanswer_slice if the answer
buffer does not have any content.

* nscd/servicescache.c: Likewise.

ChangeLog
resolv/nss_dns/dns-host.c

index 110f60889cdb33debb011a28293df885bceaca4a..688d38d059ba5a38e008b2bb06c0e1308adc8ee3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-05-17  Ulrich Drepper  <drepper@redhat.com>
+
+       * resolv/nss_dns/dns-host.c (gaih_getanswer_slice): If there are
+       no answers return NSS_STATUS_NOTFOUND.
+       (gaih_getanswer): Don't call gaih_getanswer_slice if the answer
+       buffer does not have any content.
+
 2008-05-16  Ulrich Drepper  <drepper@redhat.com>
 
        * string/strcasestr.c (CMP_FUNC): Use __strncasecmp, not strncasecmp.
        * nscd/hstcache.c: Likewise.
        * nscd/initgrcache.c: Likewise.
        * nscd/pwdcache.c: Likewise.
-       * nscd/servicecache.c: Likewise.
+       * nscd/servicescache.c: Likewise.
 
 2008-05-10  Roland McGrath  <roland@redhat.com>
 
index c52f9f7f846d883803423b3503ad98706006437e..d998ebf4f5ec1314a5e0711639873f267dea1129 100644 (file)
@@ -990,6 +990,9 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
   char *h_name = NULL;
   int h_namelen = 0;
 
+  if (ancount == 0)
+    return NSS_STATUS_NOTFOUND;
+
   while (ancount-- > 0 && cp < end_of_message && had_error == 0)
     {
       n = __ns_name_unpack (answer->buf, end_of_message, cp,
@@ -1164,12 +1167,15 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2,
 {
   int first = 1;
 
-  enum nss_status status = gaih_getanswer_slice(answer1, anslen1, qname,
-                                               &pat, &buffer, &buflen,
-                                               errnop, h_errnop, ttlp,
-                                               &first);
+  enum nss_status status = NSS_STATUS_NOTFOUND;
+
+  if (anslen1 > 0)
+    status = gaih_getanswer_slice(answer1, anslen1, qname,
+                                 &pat, &buffer, &buflen,
+                                 errnop, h_errnop, ttlp,
+                                 &first);
   if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND)
-      && answer2 != NULL)
+      && answer2 != NULL && anslen2 > 0)
     status = gaih_getanswer_slice(answer2, anslen2, qname,
                                  &pat, &buffer, &buflen,
                                  errnop, h_errnop, ttlp, &first);
This page took 0.054183 seconds and 5 git commands to generate.