diff options
author | Florian Weimer <fweimer@redhat.com> | 2019-05-15 13:51:35 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2019-05-15 15:07:49 +0200 |
commit | a9368c34d70cef91ca59b09941f496df11d6b146 (patch) | |
tree | 238aa331f31e567299bcc80b49de7f4f8707a1a3 /nss/compat-lookup.c | |
parent | d50f09181eca10a91fd9035bb90711b265770dc9 (diff) | |
download | glibc-a9368c34d70cef91ca59b09941f496df11d6b146.tar.gz glibc-a9368c34d70cef91ca59b09941f496df11d6b146.tar.xz glibc-a9368c34d70cef91ca59b09941f496df11d6b146.zip |
nss: Turn __nss_database_lookup into a compatibility symbol
The function uses the internal service_user type, so it is not really usable from the outside of glibc. Rename the function to __nss_database_lookup2 for internal use, and change __nss_database_lookup to always indicate failure to the caller. __nss_next already was a compatibility symbol. The new implementation always fails and no longer calls __nss_next2. unscd, the alternative nscd implementation, does not use __nss_database_lookup, so it is not affected by this change.
Diffstat (limited to 'nss/compat-lookup.c')
-rw-r--r-- | nss/compat-lookup.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/nss/compat-lookup.c b/nss/compat-lookup.c index 636b1bf184..79f7d96314 100644 --- a/nss/compat-lookup.c +++ b/nss/compat-lookup.c @@ -16,11 +16,12 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <nsswitch.h> + #include <shlib-compat.h> #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_27) # include <errno.h> -# include <nsswitch.h> /* On i386, the function calling convention changed from the standard ABI calling convention to three register parameters in glibc 2.8. @@ -40,3 +41,30 @@ strong_alias (__nss_passwd_lookup, __nss_hosts_lookup) compat_symbol (libc, __nss_hosts_lookup, __nss_hosts_lookup, GLIBC_2_0); #endif /* SHLIB_COMPAT */ + +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_30) + +/* These functions were exported under a non-GLIBC_PRIVATE version, + even though it is not usable externally due to the service_user + type dependency. */ + +int +attribute_compat_text_section +__nss_next (service_user **ni, const char *fct_name, void **fctp, int status, + int all_values) +{ + return -1; +} +compat_symbol (libc, __nss_next, __nss_next, GLIBC_2_0); + +int +attribute_compat_text_section +__nss_database_lookup (const char *database, const char *alternate_name, + const char *defconfig, service_user **ni) +{ + *ni = NULL; + return -1; +} +compat_symbol (libc, __nss_database_lookup, __nss_database_lookup, GLIBC_2_0); + +#endif /* SHLIB_COMPAT */ |