]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Make nscd load /etc/host.conf options in aicache
authorPetr Baudis <pasky@ucw.cz>
Sun, 22 Aug 2010 14:15:17 +0000 (16:15 +0200)
committerPetr Baudis <pasky@suse.cz>
Tue, 16 Nov 2010 01:50:21 +0000 (02:50 +0100)
This patch makes sure _res_hconf is initialized before resolving is being done.

However, this would not be enough since nscd has its own _res_hconf due to
nscd/res_hconf.c; _res_hconf_init() would work on different _res_hconf instance
than the NSS routines. We just need to make sure nscd and glibc share the same
_res_hconf instance - this should not be a problem since users should run
matching versions of glibc and nscd anyway.

ChangeLog
nscd/aicache.c
resolv/res_hconf.c

index 3d87811dc3872a2534badb2bf96008659a7f4487..8f7372ba62dfc787045f0bb1abdfea8896e12f09 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-08-19  Petr Baudis <pasky@suse.cz>
+
+       [BZ #11928]
+        * nscd/aicache.c (addhstaiX): Ensure _res_hconf has been initialized.
+        * resolv/res_hconf.c (_res_hconf): Do not redefine outside of libc.
+
 2010-05-31  Petr Baudis <pasky@suse.cz>
 
        [BZ #10085]
index 3cb22080353ea588d714a187a3275724046ad560..2e92929a6526c56c64e21d7a8f77b19727e4345e 100644 (file)
@@ -26,6 +26,7 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/mman.h>
+#include <resolv/res_hconf.h>
 
 #include "dbg_log.h"
 #include "nscd.h"
@@ -103,6 +104,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
 
   if (__res_maybe_init (&_res, 0) == -1)
            no_more = 1;
+  if (!_res_hconf.initialized)
+    _res_hconf_init ();
 
   /* If we are looking for both IPv4 and IPv6 address we don't want
      the lookup functions to automatically promote IPv4 addresses to
index ed55bec29655079502f4519d6f940079091a1c6d..c79b85ab43ef801c57c5abe3214896cbb89d0dc6 100644 (file)
@@ -84,7 +84,9 @@ static const struct cmd
 };
 
 /* Structure containing the state.  */
+#ifndef NOT_IN_libc
 struct hconf _res_hconf;
+#endif
 
 /* Skip white space.  */
 static const char *