about summary refs log tree commit diff
path: root/nss/compat-lookup.c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2019-05-15 13:51:35 +0200
committerFlorian Weimer <fweimer@redhat.com>2019-05-15 15:07:49 +0200
commita9368c34d70cef91ca59b09941f496df11d6b146 (patch)
tree238aa331f31e567299bcc80b49de7f4f8707a1a3 /nss/compat-lookup.c
parentd50f09181eca10a91fd9035bb90711b265770dc9 (diff)
downloadglibc-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.c30
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 */