mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-24 17:51:17 +03:00
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.)
This commit is contained in:
@@ -1,3 +1,20 @@
|
||||
/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996,1999 by Internet Software Consortium.
|
||||
*
|
||||
@@ -22,15 +39,12 @@
|
||||
#ifndef _HESIOD_H_INCLUDED
|
||||
#define _HESIOD_H_INCLUDED
|
||||
|
||||
int hesiod_init (void **context);
|
||||
void hesiod_end (void *context);
|
||||
int hesiod_init (void **context) attribute_hidden;
|
||||
void hesiod_end (void *context) attribute_hidden;
|
||||
char * hesiod_to_bind (void *context, const char *name,
|
||||
const char *type);
|
||||
const char *type) attribute_hidden;
|
||||
char ** hesiod_resolve (void *context, const char *name,
|
||||
const char *type);
|
||||
void hesiod_free_list (void *context, char **list);
|
||||
struct __res_state * __hesiod_res_get (void *context);
|
||||
void __hesiod_res_set (void *context, struct __res_state *,
|
||||
void (*)(void *));
|
||||
const char *type) attribute_hidden;
|
||||
void hesiod_free_list (void *context, char **list) attribute_hidden;
|
||||
|
||||
#endif /*_HESIOD_H_INCLUDED*/
|
||||
|
||||
Reference in New Issue
Block a user