From 07c77dad5025a3c1a1cef8c707fa1f1ae43d0f1c Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Sun, 28 Nov 2021 20:55:02 +0100 Subject: 49606: remove old NIS-specific code for retrieving user data --- ChangeLog | 3 ++ Src/hashnameddir.c | 123 ----------------------------------------------------- Src/utils.c | 2 +- configure.ac | 32 -------------- 4 files changed, 4 insertions(+), 156 deletions(-) diff --git a/ChangeLog b/ChangeLog index bf1f88b03..f9ae6a3bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2021-11-28 Oliver Kiddle + * 49606: Src/hashnameddir.c, Src/utils.c, configure.ac: remove old + NIS-specific code for retrieving user data + * 49602: Src/params.c: only set LOGCHECK from the watch module * 49601: Src/hist.c, Test/W01history.ztst: don't create diff --git a/Src/hashnameddir.c b/Src/hashnameddir.c index cbd1344ef..bab7b64b2 100644 --- a/Src/hashnameddir.c +++ b/Src/hashnameddir.c @@ -42,17 +42,6 @@ /* Named Directory Hash Table Functions */ /****************************************/ -#ifdef HAVE_NIS_PLUS -# include -#else -# ifdef HAVE_NIS -# include -# include -# include -# include -# endif -#endif - /* hash table containing named directories */ /**/ @@ -102,122 +91,11 @@ emptynameddirtable(HashTable ht) /* Add all the usernames in the password file/database * * to the named directories table. */ -#ifdef HAVE_NIS_PLUS -static int -add_userdir(nis_name table, nis_object *object, void *userdata) -{ - if (object->zo_data.objdata_u.en_data.en_cols.en_cols_len >= 6) { - static char name[40], dir[PATH_MAX + 1]; - register entry_col *ec = - object->zo_data.objdata_u.en_data.en_cols.en_cols_val; - register int nl = minimum(ec[0].ec_value.ec_value_len, 39); - register int dl = minimum(ec[5].ec_value.ec_value_len, PATH_MAX); - - memcpy(name, ec[0].ec_value.ec_value_val, nl); - name[nl] = '\0'; - memcpy(dir, ec[5].ec_value.ec_value_val, dl); - dir[dl] = '\0'; - - adduserdir(name, dir, ND_USERNAME, 1); - } - return 0; -} -#else -# ifdef HAVE_NIS -static int -add_userdir(int status, char *key, int keylen, char *val, int vallen, char *dummy) -{ - char *p, *d, *de; - - if (status != YP_TRUE) - return 1; - - if (vallen > keylen && *(p = val + keylen) == ':') { - *p++ = '\0'; - for (de = val + vallen - 1; *de != ':' && de > val; de--); - if (de > val) { - *de = '\0'; - if ((d = strrchr(p, ':'))) { - if (*++d && val[0]) - adduserdir(val, d, ND_USERNAME, 1); - } - } - } - return 0; -} -# endif /* HAVE_NIS */ -#endif /* HAVE_NIS_PLUS */ - /**/ static void fillnameddirtable(UNUSED(HashTable ht)) { if (!allusersadded) { -#if defined(HAVE_NIS) || defined(HAVE_NIS_PLUS) - FILE *pwf; - char buf[BUFSIZ], *p, *d, *de; - int skipping, oldct = nameddirtab->ct, usepwf = 1; - -# ifndef HAVE_NIS_PLUS - char domain[YPMAXDOMAIN]; - struct ypall_callback cb; - - /* Get potential matches from NIS and cull those without local accounts */ - if (getdomainname(domain, YPMAXDOMAIN) == 0) { - cb.foreach = (int (*)()) add_userdir; - cb.data = NULL; - yp_all(domain, PASSWD_MAP, &cb); - } -# else /* HAVE_NIS_PLUS */ - /* Maybe we should turn this string into a #define'd constant...? */ - - nis_list("passwd.org_dir", EXPAND_NAME|ALL_RESULTS|FOLLOW_LINKS|FOLLOW_PATH, - add_userdir, 0); -# endif - if (nameddirtab->ct == oldct) { - /* Using NIS or NIS+ didn't add any user directories. This seems - * fishy, so we fall back to using getpwent(). If we don't have - * that, we only use the passwd file. */ -#ifdef USE_GETPWENT - struct passwd *pw; - - setpwent(); - - /* loop through the password file/database * - * and add all entries returned. */ - while ((pw = getpwent()) && !errflag) - adduserdir(pw->pw_name, pw->pw_dir, ND_USERNAME, 1); - - endpwent(); - usepwf = 0; -#endif /* USE_GETPWENT */ - } - if (usepwf) { - /* Don't forget the non-NIS matches from the flat passwd file */ - if ((pwf = fopen(PASSWD_FILE, "r")) != NULL) { - skipping = 0; - while (fgets(buf, BUFSIZ, pwf) != NULL) { - if (strchr(buf, '\n') != NULL) { - if (!skipping) { - if ((p = strchr(buf, ':')) != NULL) { - *p++ = '\0'; - if ((de = strrchr(p, ':'))) { - *de = '\0'; - if ((d = strrchr(p, ':'))) { - if (*++d && buf[0]) - adduserdir(buf, d, ND_USERNAME, 1); - } - } - } - } else - skipping = 0; - } else - skipping = 1; - } - fclose(pwf); - } - } -#else /* no NIS or NIS_PLUS */ #ifdef USE_GETPWENT struct passwd *pw; @@ -230,7 +108,6 @@ fillnameddirtable(UNUSED(HashTable ht)) endpwent(); #endif /* USE_GETPWENT */ -#endif allusersadded = 1; } } diff --git a/Src/utils.c b/Src/utils.c index 8adab2bd7..f9127c70c 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -1108,7 +1108,7 @@ substnamedir(char *s) /* Returns the current username. It caches the username * * and uid to try to avoid requerying the password files * - * or NIS/NIS+ database. */ + * or other source. */ /**/ uid_t cached_uid; diff --git a/configure.ac b/configure.ac index 297a7482f..1af5a2854 100644 --- a/configure.ac +++ b/configure.ac @@ -2071,38 +2071,6 @@ AH_TEMPLATE([HAVE_PRCTL], AC_CHECK_FUNC(prctl,AC_DEFINE(HAVE_PRCTL), AC_SEARCH_LIBS(prctl,c,AC_DEFINE(HAVE_PRCTL))) -dnl ------------- -dnl CHECK FOR NIS -dnl ------------- -AH_TEMPLATE([HAVE_NIS], -[Define to 1 if you have NIS.]) -AC_CACHE_CHECK(for NIS, zsh_cv_sys_nis, -[test -f /usr/bin/ypcat && /usr/bin/ypcat passwd.byname > /dev/null 2>&1 && \ -zsh_cv_sys_nis=yes || zsh_cv_sys_nis=no]) -if test x$zsh_cv_sys_nis = xyes; then - AC_DEFINE(HAVE_NIS) -dnl RPC is removed from glibc-2.26 and replaced by libtirpc - AC_CHECK_HEADER(rpc/rpc.h, [], - [test -f /usr/include/tirpc/rpc/rpc.h && \ - CPPFLAGS="$CPPFLAGS -I/usr/include/tirpc"]) -dnl Some systems (Solaris 2.x, Linux Redhat 5.x) require -dnl libnsl (Network Services Library) to find yp_all - AC_SEARCH_LIBS(yp_all, nsl) -fi - -dnl ----------------- -dnl CHECK FOR NISPLUS -dnl ----------------- -AH_TEMPLATE([HAVE_NIS_PLUS], -[Define to 1 if you have NISPLUS.]) -AC_CACHE_CHECK(for NIS+, zsh_cv_sys_nis_plus, -[test x$ac_cv_func_nis_list = xyes && test -f /usr/bin/nisls && \ - /usr/bin/nisls > /dev/null 2>&1 && \ -zsh_cv_sys_nis_plus=yes || zsh_cv_sys_nis_plus=no]) -if test x$zsh_cv_sys_nis_plus = xyes; then - AC_DEFINE(HAVE_NIS_PLUS) -fi - dnl ---------------------------------------- dnl CHECK FOR LOCATION OF {U,W}TMP{,X} FILES dnl ---------------------------------------- -- cgit 1.4.1