Skip to content
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