aboutsummaryrefslogtreecommitdiff
path: root/nss
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2020-11-09 22:09:34 -0500
committerDJ Delorie <dj@redhat.com>2020-12-04 17:16:32 -0500
commitf4f3b09111e9fa38fd485979a3e40b6cfa6a757d (patch)
treef2743a776f31b86ebebc9f145dd1305bade66eef /nss
parent6eceded941bb6dcc097291757e2aef5cd7212133 (diff)
downloadglibc-f4f3b09111e9fa38fd485979a3e40b6cfa6a757d.zip
glibc-f4f3b09111e9fa38fd485979a3e40b6cfa6a757d.tar.gz
glibc-f4f3b09111e9fa38fd485979a3e40b6cfa6a757d.tar.bz2
nsswitch: use new internal API (callers)
Stitch new ABI and types throughout all NSS callers. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Diffstat (limited to 'nss')
-rw-r--r--nss/XXX-lookup.c7
-rw-r--r--nss/compat-lookup.c8
-rw-r--r--nss/getXXbyYY_r.c51
-rw-r--r--nss/getXXent_r.c10
-rw-r--r--nss/getnssent_r.c22
-rw-r--r--nss/nss_compat/compat-grp.c2
-rw-r--r--nss/nss_compat/compat-initgroups.c2
-rw-r--r--nss/nss_compat/compat-pwd.c2
-rw-r--r--nss/nss_compat/compat-spwd.c2
9 files changed, 32 insertions, 74 deletions
diff --git a/nss/XXX-lookup.c b/nss/XXX-lookup.c
index e26c6d7..8ebd9a7 100644
--- a/nss/XXX-lookup.c
+++ b/nss/XXX-lookup.c
@@ -53,12 +53,11 @@
#endif
int
-DB_LOOKUP_FCT (service_user **ni, const char *fct_name, const char *fct2_name,
+DB_LOOKUP_FCT (nss_action_list *ni, const char *fct_name, const char *fct2_name,
void **fctp)
{
- if (DATABASE_NAME_SYMBOL == NULL
- && __nss_database_lookup2 (DATABASE_NAME_STRING, ALTERNATE_NAME_STRING,
- DEFAULT_CONFIG, &DATABASE_NAME_SYMBOL) < 0)
+ if (__nss_database_lookup2 (DATABASE_NAME_STRING, ALTERNATE_NAME_STRING,
+ DEFAULT_CONFIG, &DATABASE_NAME_SYMBOL) < 0)
return -1;
*ni = DATABASE_NAME_SYMBOL;
diff --git a/nss/compat-lookup.c b/nss/compat-lookup.c
index 9af3415..07fcc94 100644
--- a/nss/compat-lookup.c
+++ b/nss/compat-lookup.c
@@ -29,7 +29,7 @@
glibc 2.7 and earlier and glibc 2.8 and later, even on i386. */
int
attribute_compat_text_section
-__nss_passwd_lookup (service_user **ni, const char *fct_name, void **fctp)
+__nss_passwd_lookup (nss_action_list *ni, const char *fct_name, void **fctp)
{
__set_errno (ENOSYS);
return -1;
@@ -46,11 +46,11 @@ compat_symbol (libc, __nss_hosts_lookup, __nss_hosts_lookup, GLIBC_2_0);
/* These functions were exported under a non-GLIBC_PRIVATE version,
even though it is not usable externally due to the service_user
- type dependency. */
+ (now nss_action_list) type dependency. */
int
attribute_compat_text_section
-__nss_next (service_user **ni, const char *fct_name, void **fctp, int status,
+__nss_next (nss_action_list *ni, const char *fct_name, void **fctp, int status,
int all_values)
{
return -1;
@@ -60,7 +60,7 @@ 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)
+ const char *defconfig, nss_action_list *ni)
{
*ni = NULL;
return -1;
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index e8c9ab1..6c287a6 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -179,7 +179,7 @@ typedef enum nss_status (*lookup_function) (ADD_PARAMS, LOOKUP_TYPE *, char *,
EXTRA_PARAMS);
/* The lookup function for the first entry of this service. */
-extern int DB_LOOKUP_FCT (service_user **nip, const char *name,
+extern int DB_LOOKUP_FCT (nss_action_list *nip, const char *name,
const char *name2, void **fctp);
libc_hidden_proto (DB_LOOKUP_FCT)
@@ -189,10 +189,7 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
size_t buflen, LOOKUP_TYPE **result H_ERRNO_PARM
EXTRA_PARAMS)
{
- static bool startp_initialized;
- static service_user *startp;
- static lookup_function start_fct;
- service_user *nip;
+ nss_action_list nip;
int do_merge = 0;
LOOKUP_TYPE mergegrp;
char *mergebuf = NULL;
@@ -227,6 +224,7 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
PREPROCESS;
#endif
+
#ifdef HANDLE_DIGITS_DOTS
switch (__nss_hostname_digits_dots (name, resbuf, &buffer, NULL,
buflen, result, &status, AF_VAL,
@@ -264,47 +262,8 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
}
#endif
- if (! startp_initialized)
- {
- no_more = DB_LOOKUP_FCT (&nip, REENTRANT_NAME_STRING,
- REENTRANT2_NAME_STRING, &fct.ptr);
- if (no_more)
- {
- void *tmp_ptr = (service_user *) -1l;
-#ifdef PTR_MANGLE
- PTR_MANGLE (tmp_ptr);
-#endif
- startp = tmp_ptr;
- }
- else
- {
- void *tmp_ptr = fct.l;
-#ifdef PTR_MANGLE
- PTR_MANGLE (tmp_ptr);
-#endif
- start_fct = tmp_ptr;
- tmp_ptr = nip;
-#ifdef PTR_MANGLE
- PTR_MANGLE (tmp_ptr);
-#endif
- startp = tmp_ptr;
- }
-
- /* Make sure start_fct and startp are written before
- startp_initialized. */
- atomic_write_barrier ();
- startp_initialized = true;
- }
- else
- {
- fct.l = start_fct;
- nip = startp;
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (fct.l);
- PTR_DEMANGLE (nip);
-#endif
- no_more = nip == (service_user *) -1l;
- }
+ no_more = DB_LOOKUP_FCT (&nip, REENTRANT_NAME_STRING,
+ REENTRANT2_NAME_STRING, &fct.ptr);
while (no_more == 0)
{
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index 8b64fcd..dfcbd01 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -95,11 +95,11 @@
/* This handle for the NSS data base is shared between all
set/get/endXXXent functions. */
-static service_user *nip;
+static nss_action_list nip;
/* Remember the last service used since the last call to `endXXent'. */
-static service_user *last_nip;
-/* Remember the first service_entry, it's always the same. */
-static service_user *startp;
+static nss_action_list last_nip;
+/* Remember the first service_entry across set/get/endent. */
+static nss_action_list startp;
#ifdef STAYOPEN_TMP
/* We need to remember the last `stayopen' flag given by the user
@@ -112,7 +112,7 @@ static STAYOPEN_TMP;
__libc_lock_define_initialized (static, lock)
/* The lookup function for the first entry of this service. */
-extern int DB_LOOKUP_FCT (service_user **nip, const char *name,
+extern int DB_LOOKUP_FCT (nss_action_list *nip, const char *name,
const char *name2, void **fctp);
libc_hidden_proto (DB_LOOKUP_FCT)
diff --git a/nss/getnssent_r.c b/nss/getnssent_r.c
index 8a366bc..84e977c 100644
--- a/nss/getnssent_r.c
+++ b/nss/getnssent_r.c
@@ -25,20 +25,20 @@
services (left). */
static int
setup (const char *func_name, db_lookup_function lookup_fct,
- void **fctp, service_user **nip, service_user **startp, int all)
+ void **fctp, nss_action_list *nip, nss_action_list *startp, int all)
{
int no_more;
- if (*startp == NULL)
+ if (*startp == NULL || all)
{
no_more = lookup_fct (nip, func_name, NULL, fctp);
- *startp = no_more ? (service_user *) -1l : *nip;
+ *startp = no_more ? (nss_action_list) -1l : *nip;
}
- else if (*startp == (service_user *) -1l)
+ else if (*startp == (nss_action_list) -1l)
/* No services at all. */
return 1;
else
{
- if (all || !*nip)
+ if (!*nip)
/* Reset to the beginning of the service list. */
*nip = *startp;
/* Look up the first function. */
@@ -49,8 +49,8 @@ setup (const char *func_name, db_lookup_function lookup_fct,
void
__nss_setent (const char *func_name, db_lookup_function lookup_fct,
- service_user **nip, service_user **startp,
- service_user **last_nip, int stayopen, int *stayopen_tmp,
+ nss_action_list *nip, nss_action_list *startp,
+ nss_action_list *last_nip, int stayopen, int *stayopen_tmp,
int res)
{
union
@@ -110,8 +110,8 @@ __nss_setent (const char *func_name, db_lookup_function lookup_fct,
void
__nss_endent (const char *func_name, db_lookup_function lookup_fct,
- service_user **nip, service_user **startp,
- service_user **last_nip, int res)
+ nss_action_list *nip, nss_action_list *startp,
+ nss_action_list *last_nip, int res)
{
union
{
@@ -154,8 +154,8 @@ int
__nss_getent_r (const char *getent_func_name,
const char *setent_func_name,
db_lookup_function lookup_fct,
- service_user **nip, service_user **startp,
- service_user **last_nip, int *stayopen_tmp, int res,
+ nss_action_list *nip, nss_action_list *startp,
+ nss_action_list *last_nip, int *stayopen_tmp, int res,
void *resbuf, char *buffer, size_t buflen,
void **result, int *h_errnop)
{
diff --git a/nss/nss_compat/compat-grp.c b/nss/nss_compat/compat-grp.c
index 510d49e..6637c96 100644
--- a/nss/nss_compat/compat-grp.c
+++ b/nss/nss_compat/compat-grp.c
@@ -30,7 +30,7 @@
NSS_DECLARE_MODULE_FUNCTIONS (compat)
-static service_user *ni;
+static nss_action_list ni;
static enum nss_status (*setgrent_impl) (int stayopen);
static enum nss_status (*getgrnam_r_impl) (const char *name,
struct group * grp, char *buffer,
diff --git a/nss/nss_compat/compat-initgroups.c b/nss/nss_compat/compat-initgroups.c
index c0dcdf8..99f7df6 100644
--- a/nss/nss_compat/compat-initgroups.c
+++ b/nss/nss_compat/compat-initgroups.c
@@ -33,7 +33,7 @@
NSS_DECLARE_MODULE_FUNCTIONS (compat)
-static service_user *ni;
+static nss_action_list ni;
static enum nss_status (*initgroups_dyn_impl) (const char *, gid_t,
long int *, long int *,
gid_t **, long int, int *);
diff --git a/nss/nss_compat/compat-pwd.c b/nss/nss_compat/compat-pwd.c
index 3a212a0d..789878c 100644
--- a/nss/nss_compat/compat-pwd.c
+++ b/nss/nss_compat/compat-pwd.c
@@ -34,7 +34,7 @@
NSS_DECLARE_MODULE_FUNCTIONS (compat)
-static service_user *ni;
+static nss_action_list ni;
static enum nss_status (*setpwent_impl) (int stayopen);
static enum nss_status (*getpwnam_r_impl) (const char *name,
struct passwd * pwd, char *buffer,
diff --git a/nss/nss_compat/compat-spwd.c b/nss/nss_compat/compat-spwd.c
index d802ee0..7310da8 100644
--- a/nss/nss_compat/compat-spwd.c
+++ b/nss/nss_compat/compat-spwd.c
@@ -34,7 +34,7 @@
NSS_DECLARE_MODULE_FUNCTIONS (compat)
-static service_user *ni;
+static nss_action_list ni;
static enum nss_status (*setspent_impl) (int stayopen);
static enum nss_status (*getspnam_r_impl) (const char *name, struct spwd * sp,
char *buffer, size_t buflen,