From 5018f16c6205404ba3aa7298dc8a3d45fbd46bfc Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 2 May 2016 15:25:20 +0200 Subject: hesiod: Always use thread-local resolver state [BZ #19573] The Hesiod implementation imported into glibc was enhanced to support caller-supplied resolver states. But its only consumer is nss_hesiod, and it supplies the thread-local resolver state. Therefore, this commit changes the Hesiod implementation to use the thread-local resolver state (_res) directly. This fixes bug 19573 because the Hesiod implementation no longer has to initialize and free any resolver state. To avoid any risk of interposition of ABI-incompatible Hesiod function implementations, this commit marks the Hesiod functions as hidden. (They were already hidden using a linker version script.) --- hesiod/nss_hesiod/hesiod-pwd.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'hesiod/nss_hesiod/hesiod-pwd.c') diff --git a/hesiod/nss_hesiod/hesiod-pwd.c b/hesiod/nss_hesiod/hesiod-pwd.c index 1ddf3e3c9f..c11916781b 100644 --- a/hesiod/nss_hesiod/hesiod-pwd.c +++ b/hesiod/nss_hesiod/hesiod-pwd.c @@ -24,8 +24,6 @@ #include #include -#include "nss_hesiod.h" - /* Get the declaration of the parser function. */ #define ENTNAME pwent #define STRUCTURE passwd @@ -56,8 +54,7 @@ lookup (const char *name, const char *type, struct passwd *pwd, size_t len; int olderr = errno; - context = _nss_hesiod_init (); - if (context == NULL) + if (hesiod_init (&context) < 0) return NSS_STATUS_UNAVAIL; list = hesiod_resolve (context, name, type); -- cgit v1.2.1