Release 4.17.3 Changelog: Alejandro Colomar (59): src/login_nopam.c: list_match(): Refactor conditional src/login_nopam.c: list_match(): Add superfluous else src/login_nopam.c: list_match(): '(match)' is always true here src/login_nopam.c: list_match(): Move code around src/login_nopam.c: list_match(): Remove local variable configure.ac, lib/, src/: Assume setgroups(2) exists configure.ac, lib/: Assume initgroups(3) exists lib/: Include <gshadow.h> if it's available configure.ac, lib/gshadow.c: Presume working shadow group support in libc lib/gshadow_.h: Fix compatibility with libc's struct sgrp lib/, src/: Reduce scope of variables lib/, src/: Un-spageticize code lib/, src/: Simplify allocation of buffer lib/search/cmp/, lib/, tests/: CMP(), cmp_*(): Add macro and functions lib/search/l/: LFIND(): Add macro lib/, src/: Use LFIND() instead of open-coded search loops lib/addgrps.c: add_groups(): Remove useless cast lib/addgrps.c: add_groups(): Allocate earlier lib/addgrps.c: add_groups(): Simplify redundant code with a goto lib/, src/: Unconditionally call setgroups(2) lib/, src/: Replace redundant checks by actual error handling lib/search/l/: LSEARCH(): Add macro lib/, src/: Use LSEARCH() instead of its pattern lib/addgrps.c: add_groups(): Split variable to avoid sign-mismatch diagnostics lib/string/strchr/: strchrscnt(): Add function lib/addgrps.c: add_groups(): Reallocate at once lib/, src/: Rename variables lib/addgrps.c: add_groups(): Remove arbitrary limit lib/search/sort/: QSORT(): Add macro lib/adds.h: addslN(): Use QSORT() instead of its pattern configure.ac, lib/, src/: Use gid_t instead of GETGROUPS_T lib/shadow/grp/: agetgroups(): Add function lib/, src/: Use agetgroups() instead of its pattern lib/, src/, doc/: Remove dead code lib/pwauth.*: PW_{ADD,CHANGE,DELETE,FTP,REXEC}: Remove dead code lib/, src/, doc/: Remove pw_auth()'s $3 as dead code lib/motd.c: motd(): Invert logic to reduce indentation lib/, src/: motd(): Report errors instead of exiting from library code configure.ac, lib/: Use __has_include(<crypt.h>) instead of HAVE_CRYPT_H configure.ac, lib/: Use __has_include(<sys/random.h>) instead of HAVE_SYS_RANDOM_H lib/: Use __has_include(<security/pam_misc.h>) instead of HAVE_SECURITY_PAM_MISC_H lib/: Use __has_include(<security/openpam.h>) instead of HAVE_SECURITY_OPENPAM_H lib/idmapping.c: Unconditionally include <sys/prctl.h> configure.ac, lib/: Use __has_include(<sys/capability.h>) instead of HAVE_SYS_CAPABILITY_H configure.ac: Remove unused AC_CHECK_HEADERS() checks configure.ac, lib/: Use __has_include(<gshadow.h>) instead of HAVE_GSHADOW_H lib/chkname.c: is_valid_name(): Use streq() instead of its pattern src/useradd.c: create_home(): Use !streq() instead of its pattern src/useradd.c: E_BAD_NAME: Use a different error code for bad login names lib/string/strcmp/: strcaseeq(): Add function lib/, src/: Use strcaseeq() instead of its pattern src/useradd.c: Use !strcaseeq() instead of its pattern lib/string/strchr/: strrcspn(), stprcspn(): Add function and macro lib/string/strspn/, lib/, src/: Move *spn() APIs to separate subdir lib/string/strspn/, lib/, src/: stprspn(), strrspn_(): Split API into function and macro lib/basename.c: Basename(): Use stprcspn() instead of its pattern lib/string/: Add comments expanding the letter-soup API names lib/string/ctype/strisascii/: strisdigit(): Add function lib/: Use strisdigit() instead of its pattern Chris Hofstaedtler (1): chsh: do not warn about blank shell Iker Pedrosa (11): Tests: implement system test framework tests: basic configuration tests: basic user creation tests: recreate deleted user tests: rename user tests: delete user and homedir tests: basic group creation tests: change GID of a group tests: basic group deletion etc/login.defs: enable CREATE_HOME CI: run system tests Marc Haber (1): man/useradd.8.xml: Document new exit code 19 (E_BAD_NAME) Markus Hiereth (1): man/useradd.8.xml: wfix Michael Vetter (2): ci: add openSUSE Tumbleweed doc: fix typo Serge Hallyn (3): Revert "etc/login.defs: enable CREATE_HOME" add and use a login.defs.test with CREATE_HOME set Release 4.17.3 Tobias Stoeckmann (10): man/: Install suauth.5 only if feature exists src/: Make line number overflows less likely src/newusers.c: Turn nusers into size_t chage: Drop PAM support man/passwd.1.xml: -P disables PAM support src/login_nopam.c: list_match(): Use iteration instead of recursion lib/encrypt.c: Do not exit in error case src/gpasswd: Clear password in more cases src/gpasswd: Use correct preprocessor definition lib/, src/: Turn error counters into flags Todd C. Miller (1): src/vipw.c: Restore the original terminal pgrp after editing