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.) --- ChangeLog | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index a92df7310f..1149fd30e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2016-05-02 Florian Weimer + + [BZ #19573] + * hesiod/Makefile (libnss_hesiod-routines): Remove hesiod-init. + * hesiod/nss_hesiod/hesiod-init.c: Remove file. + * hesiod/nss_hesiod/nss_hesiod.h: Likewise. + * hesiod/hesiod.h (__hesiod_res_get, __hesiod_res_set): Remove. + (hesiod_init, hesiod_end, hesiod_to_bind, hesiod_resolve) + (hesiod_free_list): Mark as hidden. + * hesiod/hesiod_p (struct hesiod_p): Remove res, free_res, + res_set, res_get. + * hesiod/hesiod.c: Remove unnecessary forward declarations. + (init, __hesiod_res_get, __hesiod_res_set): Remove. + (hesiod_init): Remove obsolete res_ninit call. + (hesiod_end): Do not free resolver state. Do not invoke callback. + (hesiod_bind): Do not call init. + (get_txt_records): Use res_mkquery, res_send instead of + res_nmkquery, res_nsend. + * hesiod/nss_hesiod/hesiod-grp.c (lookup): Call hesiod_init + instead of _nss_hesiod_init. + (_nss_hesiod_initgroups_dyn): Likewise. + * hesiod/nss_hesiod/hesiod-proto.c (lookup): Likewise. + * hesiod/nss_hesiod/hesiod-pwd.c (lookup): Likewise. + * hesiod/nss_hesiod/hesiod-service.c (lookup): Likewise. + 2016-05-02 Florian Weimer * hesiod/hesiod_p.h (DEF_RHS): Remove. -- cgit v1.2.3