diff options
Diffstat (limited to 'nss')
-rw-r--r-- | nss/XXX-lookup.c | 7 | ||||
-rw-r--r-- | nss/compat-lookup.c | 8 | ||||
-rw-r--r-- | nss/getXXbyYY_r.c | 51 | ||||
-rw-r--r-- | nss/getXXent_r.c | 10 | ||||
-rw-r--r-- | nss/getnssent_r.c | 22 | ||||
-rw-r--r-- | nss/nss_compat/compat-grp.c | 2 | ||||
-rw-r--r-- | nss/nss_compat/compat-initgroups.c | 2 | ||||
-rw-r--r-- | nss/nss_compat/compat-pwd.c | 2 | ||||
-rw-r--r-- | nss/nss_compat/compat-spwd.c | 2 |
9 files changed, 32 insertions, 74 deletions
diff --git a/nss/XXX-lookup.c b/nss/XXX-lookup.c index e26c6d7f8b..8ebd9a740a 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 9af34150bd..07fcc94f58 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 e8c9ab1bb3..6c287a6127 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 8b64fcd795..dfcbd01f66 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 8a366bc7ea..84e977c33b 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 510d49e8c7..6637c96355 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 c0dcdf839d..99f7df613a 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 3a212a0dab..789878ccbd 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 d802ee0302..7310da85bd 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, |