Tags: shadow-maint/shadow
Tags
shadow-4.19.4
- shadow-4.19.4:
Regression fixes:
- Build with GCC 10 and older.
- shadow-4.19.3:
Regression fixes:
- chpasswd(8):
- Don't reject hashes containing backslashes or 'n' characters
(affected SHA-256, SHA-512, MD5).
- shadow-4.19.2:
Regression fixes:
- usermod(8):
- Revert an incorrect commit.
See <#1509>
and <#1510>.
- shadow-4.19.1:
Regression fixes:
- chpasswd(8):
- Don't reject leading '!' in password hashes or a hash consisting
of "*". These were accidentally rejected in 4.19.0.
See <#1483>
and <#1486>.
- Accept a passwordless account ("" or "!").
See <#1483 (comment)>
and <#1505>.
Closes: <#1561>
Signed-off-by: Alejandro Colomar <[email protected]>
shadow-4.19.3 - shadow-4.19.3: Regression fixes: - chpasswd(8): - Don't reject hashes containing backslashes or 'n' characters (affected SHA-256, SHA-512, MD5). - shadow-4.19.2: Regression fixes: - usermod(8): - Revert an incorrect commit. See <#1509> and <#1510>. - shadow-4.19.1: Regression fixes: - chpasswd(8): - Don't reject leading '!' in password hashes or a hash consisting of "*". These were accidentally rejected in 4.19.0. See <#1483> and <#1486>. - Accept a passwordless account ("" or "!"). See <#1483 (comment)> and <#1505>. Closes: <#1521> Signed-off-by: Alejandro Colomar <[email protected]>
shadow-4.19.1
Regression fixes:
- chpasswd(8):
- Don't reject leading '!' in password hashes or a hash consisting
of "*". These were accidentally rejected in 4.19.0.
See <#1483>
and <#1486>.
- Accept a passwordless account ("" or "!").
See <#1483 (comment)>
and <#1505>.
Closes: <#1487>
Signed-off-by: Alejandro Colomar <[email protected]>
Release 4.19.0 Breaking changes: - Remove support for escaped newlines in configuration files. It never worked correctly. b0a7ce5 (2025-12-05; "lib/, po/: Remove fgetsx() and fputsx()") - Some user names and group names are too dangerous and are rejected, even with --badname. 25aea74 (2025-12-25; "lib/chkname.c, src/: Strictly disallow really bad names") Future breaking changes: - SHA512 and SHA256 will be supported unconditionally in the next release. The build-time flag '--with-sha-crypt' will be removed. See <#1452>. Support: - Several years ago, there were talks about deprecating su(1) and login(1), back when this project was maintained as part of Debian. However, nothing was clearly stated, and there were doubts about the status of these programs. Let's clarify them now. Our implementations of su(1) and login(1) are fully supported, and we don't have any plans to remove them. They are NOT deprecated. See <#464>. Deprecations: - groupmems(8) The program will be removed in a future release. See <#1343>. - logoutd(8) The program will be removed in the next release. See <#999>, and <#1344>. - DES This hashing algorithm has been deprecated for a long time, and support for it will be removed in a future release. See <#1456> - MD5 This hashing algorithm has been deprecated for a long time, and support for it will be removed in a future release. See <#1457> - login.defs(5): MD_CRYPT_ENAB This feature had been deprecated for decades. It will be removed in a future release. The command-line equivalents (-m, --md5) of this feature in chpasswd(8) and chgpasswd(8) will also be removed in a future release. See <#1455>. - login.defs(5): PASS_MAX_LEN This feature is ignored except for DES. Once DES is removed, it makes no sense keeping it. It may be removed in a future release. - Password aging Scientific research shows that periodic password expiration leads to predictable password patterns, and that even in a theoretical scenario where that wouldn't happen the gains in security are mathematically negligible. <https://people.scs.carleton.ca/~paulv/papers/expiration-authorcopy.pdf> Modern security standards, such as NIST SP 800-63B-4 in the USA, prohibit periodic password expiration. <https://pages.nist.gov/800-63-4/sp800-63b.html#passwordver> <https://pages.nist.gov/800-63-FAQ/#q-b05> <https://www.ncsc.gov.uk/collection/passwords/updating-your-approach#PasswordGuidance:UpdatingYourApproach-Don'tenforceregularpasswordexpiry> To align with these, we're deprecating the ability to periodically expire passwords. The specifics and long-term roadmap are currently being discussed, and we invite feedback from users, particularly from those in regulated environments. See <#1432>. This deprecation includes the following programs and features: expiry(1) chage(1): -I,--inactive (also the interactive version) -m,--mindays (also the interactive version) -M,--maxdays (also the interactive version) -W,--warndays (also the interactive version) passwd(1): -k,--keep-tokens -n,--mindays -x,--maxdays -i,--inactive -w,--warndays useradd(8): -f,--inactive usermod(8): -f,--inactive login.defs(5): PASS_MIN_DAYS PASS_MAX_DAYS PASS_WARN_AGE /etc/default/useradd: INACTIVE shadow(5): sp_lstchg: Restrict to just the values 0 and empty. sp_min sp_max sp_warn sp_inact We recognize that many users operate in environments with regulatory or contractual requirements that still mandate password aging. To minimize disruption, these features will remain functional for a significant period. However, we encourage administrators to review their internal policies, talk to their regulators if appropriate, and participate in the roadmap discussion linked above.
4.19.0-rc1 (herve)
Changelog:
Alejandro Colomar (140):
tests/unit/test_xaprintf.c: Fix test by using streq() instead of strcmp(3)
lib/shadow/grp/: agetgroups(): Fix possible buffer overrun on non-Linux systems
src/vipw.c: usage(): Print everything to the same stream
lib/, src/: Use printf(3) instead of its pattern
src/groupmod.c: --help: wfix
lib/, src/: Reorder while() conditions for safety
lib/agetpass.c: Pass "" instead of NULL as an ignored prompt
src/chfn.c: Do not allow the 'slop' fields to appear before any non-slop gecos fields
src/chfn.c: Use strsep(3) and strcpy(3) instead of its pattern
src/chfn.c: Write an empty string if there's nothing in the GECOS field
src/chfn.c: slop: Reduce buffer size
src/chfn.c: Simplify checking for a long GECOS field
src/chfn.c: Use stpeprintf() to improve readability
lib/utmp.c: get_session_host(): Fix memory leak
lib/subordinateio.c: list_owner_ranges(): Fix duplicate range when username matches ID
src/su.c: Fix incorrect (non-matching) parentheses
configure.ac, lib/, src/: Use _PATH_LASTLOG from <paths.h>
configure.ac, lib/: Use _PATH_WTMP from <paths.h>
lib/, src/: Use consistent style using strchr(3) in conditionals
lib/string/README: Add guidelines for using strings
lib/shadow/, lib/: putsgent(): Move to separate file
lib/shadow/, lib/: gshadow: Move to separate file and rename
lib/shadow/, lib/, src/: endsgent(): Move to separate file
lib/shadow/, lib/, src/: Use _PATH_GSHADOW from <paths.h>
lib/shadow/, lib/: setsgent(): Move to separate file
lib/shadow/, lib/, src/: struct sgrp: Move to separate file
lib/shadow/, lib/: fgetsgent(): Move to separate file
lib/shadow/, lib/: sgetsgent(): Move to separate file
lib/shadow/, lib/, src/: getsgnam(): Move to separate file
lib/shadow/, lib/: getsgent(): Move to separate file
lib/: GSHADOW: Remove unused macro
lib/shadow/, lib/, po/: sgetgrent(): Move to under lib/shadow/group/
lib/shadow/, lib/, po/: sgetpwent(): Move to under lib/shadow/passwd/
lib/shadow/, lib/, po/: sgetspent(): Move to under lib/shadow/shadow/
lib/: Use libc _FILE_SHADOW from <paths.h>
src/usermod.c: Remove 'no changes' informative output
src/usermod.c: Remove optimizations
lib/commonio.[ch]: struct commonio_ops: Add prefix 'cio_' to structure members
lib/, src/: Use strncmp(3) instead of explicit byte comparisons
lib/attr.h: __has_c_attribute(): Define fallback
lib/attr.h: ATTR_NONSTRING: Add attribute [[gnu::nonstring]]
lib/string/strcmp/: strneq(), STRNEQ(): Add APIs
lib/, src/: Use STRNEQ() instead of their pattern
lib/: exit_if_null(): Add macro to exit(3) on error
lib/string/strdup/: xstrdup(): Reimplement xstrdup() in terms of exit_if_null()
lib/alloc/x/: X*ALLOC(): Reimplement in terms of exit_if_null()
lib/string/sprintf/, tests/: xaprintf(): Reimplement in terms of exit_if_null()
lib/string/strdup/: XSTRNDUP(): Reimplement in terms of exit_if_null()
lib/string/strdup/xstrndup.h: Add STRNDUP()
lib/string/strtok/: xastrsep2ls() Reimplement in terms of exit_if_null()
lib/, src/, tests/: Move x*() definitions to non-x* header files
lib/utmp.c: is_my_tty(): Don't cache ttyname(3).
lib/utmp.c: is_my_tty(): Rename local variable
lib/utmp.c: is_my_tty(): Use ttyname_r(3) to make it re-entrant
lib/utmp.c: ttyname_ra(): Add macro
lib/getdef.h: Add missing includes
lib/string/: strerrno(): Add macro
lib/, src/: Use strerrno() instead of its pattern
src/useradd.c: Remove unused variable
src/gpasswd.c: Remove unused parameter $1 of check_perms()
lib/copydir.c: Remove unused parameter $3 of copy_symlink()
lib/copydir.c: Remove unused parameter $2 of copy_hardlink()
lib/: Remove unused parameter $3 of password_check() and propagate
lib/obscure.c: Remove unused parameter $1 of palindrome()
lib/, src/: Remove unused parameter $3 of passwd_check()
lib/defines.h: NGROUPS_MAX: Remove unused macro
lib/defines.h: LOG_NOWAIT: Remove unused macro
lib/, src/: Remove unused parameter $2 of audit_logger()
tests/unit/: Use more generic strings and names for testing exit_if_null()
tests/unit/test_exit_if_null.c: Test through XMALLOC() instead of xaprintf()
lib/typetraits.h: QChar_of(): Add macro
lib/atoi/: a2i(): Re-implement with a statement expression
lib/atoi/, */: Move all a2i() macros to the same file
lib/atoi/, */: Move all str2i() macros together with a2i()
lib/attr.h: MAYBE_UNUSED: Implement with [[maybe_unused]]
lib/attr.h: NORETURN: Implement with [[noreturn]]
lib/attr.h: format_attr(): Use it also with Clang
lib/attr.h: ATTR_ACCESS(): Use it also with Clang
lib/attr.h: ATTR_ALLOC_SIZE(): Use it also with Clang
lib/attr.h: ATTR_STRING(): Use it also with Clang
src/: usage(): Use [[noreturn]]
*/: s/READLINKNUL/readlinknul_a/
*/: s/SIZEOF_ARRAY/sizeof_a/
*/: s/STRNDUPA/strndupa_a/
*/: s/STRNDUP/strndup_a/ s/XSTRNDUP/xstrndup_a/
*/: s/SNPRINTF/stprintf_a/
*/: s/STRNCAT/strncat_a/
*/: s/STRNCPY/strncpy_a/
*/: s/STRTCPY/strtcpy_a/
*/: s/MEMZERO/memzero_a/
*/: s/STRFTIME/strftime_a/
*/: s/STRSEP2LS/strsep2ls_a/
*/: s/STRSEP2ARR/strsep2arr_a/
*/: s/DAY_TO_STR/day_to_str_a/
*/: s/STRNEQ/strneq_a/
lib/string/README: Document *_a() macros
lib/string/: strerrno(): Use statement expression to perform lvalue conversion
lib/, src/: Consistently use sizeof() as if it were a function
lib/, src/: Remove useless casts in fgets(3)
lib/, src/: Consistently use NULL with fgets(3)
tests/unit/test_xaprintf.c: Use assert_string_equal()
tests/unit/: Unname unused parameters in callbacks
lib/subordinateio.c: Use REALLOCF() instead of its pattern
lib/subordinateio.c: append_range(): Use reallocf(3)-like calling conventions
lib/: Use simple assignment instead of memcpy(3)
configure.ac, Makefile.am: Propagate ./configure flags to 'distcheck'
src/usermod.c: $user_newhome: Remove all trailing '/'s
lib/string/strspn/: Add missing const
autogen.sh: CFLAGS: Promote -Wdiscarded-qualifiers to an error
src/: Fix uninitialized flags, and use const appropriately
lib/: Use a consistent name for macro arguments representing a type name
lib/search/, lib/, src/: Add a type parameter to the type-safe macros
lib/search/: Simplify CMP()
lib/search/: Split APIs
lib/sizeof.h: typeas(): Add macro
lib/{alloc,search}/: Use typeas() to add support for arbitrary types
src/: Unname unused parameter of main()
lib/, src/ tests/: Unname unused parameters in callbacks
lib/logind.c: Unname unused function parameter
lib/, src/: Add [[gnu::unused]] to parameters used in conditionally-compiled code
lib/prefix_flag.c: Add [[gnu::unused]] to variable used in conditionally-compiled code
autogen.sh: CFLAGS: Promose some -Wunused-* to an error
lib/sssd.h: sssd_flush_cache(): Define as static inline function
lib/search/: Use (void)0 within _Generic(3) to avoid -Wunused-value diagnostics
lib/, po/: Remove fgetsx() and fputsx()
lib/: Use getline(3) instead of its pattern
lib/gshadow.c: fgetsgent(): Don't use static variables
lib/alloc/: reallocarray[f]_(): Add helper macros to handle n?:1
lib/: Use compound literals to avoid casts
lib/alloc/: REALLOC[F](): Move _Generic(3) to separate line
lib/, src/: Rename REALLOCF() => reallocf_T()
lib/: Rename REALLOC() => realloc_T()
lib/: Rename XREALLOC() => xrealloc_T()
lib/: Rename MALLOC() => malloc_T()
lib/: Rename XMALLOC() => xmalloc_T()
lib/: Rename CALLOC() => calloc_T()
lib/: Rename XCALLOC() => xcalloc_T()
lib/search/: lsearch_T(): Don't return anything
lib/tcbfuncs.c: rmdir_leading(): Constify input
lib/tcbfuncs.c: rmdir_leading(): Create string just once
Alexey Tikhonov (2):
Make sure 'sss_cache' can get both 'U' and 'G' args
pwck/grpck: only force nscd/sssd caches flush if anything was changed
Anders Blomdell (2):
Factor out 'want_sub[ug]ids' and rename to 'want_sub[ug]id_file'
When using nss-module, avoid using '/etc/sub[ug]id'
Antonio Terceiro (1):
newusers: allow not passing a password
Evgeny Grin (Karlson2k) (27):
lib/utmp.c: check parent PID too when looking for utmp entry
*/: Fix including <config.h> as system header
lib/utmp.c: Fixed generated strings for "ut_id"
lib/utmp.c: Align generated "ut_id" with modern software
lib/utmp.c: Refactoring for readability
lib/utmp.c: Additional refactoring for readability
lib/, src/: Fix utmp update: use initial PID
src/login.c: Fix checking whether 'login' is started as 'init'
configure: Remove duplicated check and unused Makefile substitution
configure: Fix incorrect use of AM_CONDITIONAL
configure: Unify M4 quoting
configure: Move AC_ARG_ENABLE. It cannot be conditional.
configure: Fix quoting of the "#" symbol
Makefile.am: Fix libtool warning
configure: Move helper files to 'build-aux/'
configure: Unify checks for variable values
configure: Fix outdated and non-portable 'test' syntax
configure: Print configuration summary to the log (in addtion to stdout)
configure: Document --enable-logind behaviour correctly
configure.ac: Add check for value given for --enable-logind
configure.ac: Improve formatting for libsystemd check
configure.ac: Make sure that logind is enabled if requested, make --enable-logind default
configure.ac: cosmetics - unified check for $enable_logind value
lib/utmp.c: Fix umtp entry search
lib/utmp.c: Fix use of last utmp entry instead of patrial-match entry
lib/utmp.c: Add ATTR_MALLOC(free) attribute
lib/utmp.c: Add explicit include <stdlib.h> for free() and other functions
Frans Spiesschaert (1):
po/nl.po: Update
Georg Pfuetzenreuter (2):
man/chsh: remove duplicate paragraph
man/chsh: deduplicate shells text
Iker Pedrosa (78):
share/ansible/: fix Debian 13 build
tests/system/pyproject.toml: add mypy rules
tests/system/framework/: fix Python linter issues
tests/system/tests/: fix Python linter issues
.github/workflows/static-code-analysis.yml: add Python linters
lib/: add SELinux control flag in commonio_close()
lib/, src/: add SELinux control flag in pw_close()
lib/, src/: add SELinux control flag in spw_close()
lib/, src/: add SELinux control flag in gr_close()
lib/, src/: add SELinux control flag in sgr_close()
lib/, src/: add SELinux control flag in sub_uid_close()
lib/, src/: add SELinux control flag in sub_gid_close()
lib/: add SELinux control flag in commonio_unlock()
lib/, src/: add SELinux control flag in pw_unlock()
lib/, src/: add SELinux control flag in spw_unlock()
lib/, src/: add SELinux control flag in gr_unlock()
lib/, src/: add SELinux control flag in sgr_unlock()
src/vipw.c: add SELinux control flag in unlock
lib/, src/: add SELinux control flag in sub_uid_unlock()
lib/, src/: add SELinux control flag in sub_gid_unlock()
src/useradd.c: chroot or prefix SELinux file context
src/useradd.c: SELinux file context for home and mail
src/useradd.c: SELinux file context for fail_exit()
src/usermod.c: chroot or prefix SELinux file context
src/usermod.c: SELinux file context for fail_exit()
src/userdel.c: replace global variable by flags structure
src/userdel.c: chroot or prefix SELinux file context
src/userdel.c: SELinux file context for fail_exit()
src/newusers.c: chroot or prefix SELinux file context
src/newusers.c: SELinux file context for fail_exit()
lib/: add SELinux control flag in cleanup_unlock_*()
src/groupadd.c: chroot or prefix SELinux file context
src/groupmod.c: chroot or prefix SELinux file context
src/groupdel.c: chroot or prefix SELinux file context
src/chgpasswd.c: chroot or prefix SELinux file context
src/chgpasswd.c: SELinux file context for fail_exit()
src/groupmems.c: chroot or prefix SELinux file context
src/groupmems.c: SELinux file context for fail_exit()
src/grpck.c: chroot or prefix SELinux file context
src/grpck.c: SELinux file context for fail_exit()
src/grpconv.c: chroot or prefix SELinux file context
src/grpconv.c: SELinux file context for fail_exit()
src/grpunconv.c: chroot or prefix SELinux file context
src/grpunconv.c: SELinux file context for fail_exit()
src/chage.c: chroot or prefix SELinux file context
src/chage.c: SELinux file context for fail_exit()
src/chfn.c: chroot or prefix SELinux file context
src/chfn.c: SELinux file context for fail_exit()
src/chpasswd.c: chroot or prefix SELinux file context
src/chpasswd.c: SELinux file context for fail_exit()
src/chsh.c: chroot or prefix SELinux file context
src/chsh.c: SELinux file context for fail_exit()
src/passwd.c: chroot or prefix SELinux file context
src/passwd.c: SELinux file context for fail_exit()
src/pwck.c: chroot or prefix SELinux file context
src/pwck.c: SELinux file context for fail_exit()
src/pwconv.c: chroot or prefix SELinux file context
src/pwconv.c: SELinux file context for fail_exit()
src/pwunconv.c: chroot or prefix SELinux file context
src/pwunconv.c: SELinux file context for fail_exit()
src/gpasswd.c: chroot or prefix SELinux file context
man/: update `--root` flag with no SELinux support
doc/contributions/tests.md: add Python system tests
doc/contributions/build_install.md: container troubleshooting
doc/contributions/ci.md: document system tests
doc/contributions/coding_style.md: Python code
useradd: fix uninitialized flags causing aarch64 failure
share/ansible/: create the newusers PAM service file
tests/system/framework/roles/shadow.py: implement binding for `newusers`
tests/system/tests/test_newusers.py: create multiple users from stdin
tests/system/tests/test_newusers.py: create multiple users using file input
share/ansible/: create the groupmems PAM service file
tests/system/framework/roles/shadow.py: implement binding for `groupmems`
tests/system/tests/test_groupmems.py: add user to group as root user
share/ansible/: install `expect` package
share/ansible/: Make sure `expect` is found in Alpine
tests/system/framework/roles/shadow.py: implement binding for `newgrp`
tests/system/tests/test_newgrp.py: change to new group
Samuel Thibault (1):
hurd: do not include sys/prctl.h when it is not available
Serge Hallyn (3):
Merge pull request #1258 from ikerexxe/useradd-chroot
Update po and potfiles
(pre-)Release 4.19.0-rc1
akshay (1):
groupadd: clarify -U option help text Align wording with groupmod to reduce ambiguity in -U option description.
sgakerru (5):
lib/list.c: free_list(): Add function
src/useradd.c: Use free_list() to free user groups list
src/useradd.c: Do not automatically add supplements groups for system users
useradd: fix test `69_useradd_default_GROUPS_name`
useradd: tests for supplements groups
vinz (1):
chpasswd: Check hash before write when using -e
Release 4.18.0
what's changed:
CI: purge man-db by @ikerexxe in #1241
passwd: document exit code when PAM has errored by @hallyn in #1244
Man patches by @zeha in #1175
Quick fix: define E_PAM_ERR in lib/pam_pass.c by @hallyn in #1245
Accept /usr/sbin/nologin as an alternate to /sbin/nologin by @zeha in #1246
Add LOGIN_ENV_SAFELIST to FOREIGNDEFS by @stanislav-brabec in #1248
ci: add gawk as a fedora dependency by @ikerexxe in #1252
man/useradd.8.xml: fix the CREATE_HOME description by @hallyn in #1251
lib/getdate.y: Restrict the date formats that we support by @alejandro-colomar in #1238
newuidmap: better error logging on failure by @matthewhughes934 in #1254
Extend basic test cases to check shadow and gshadow entries by @ikerexxe in #1237
lib/sizeof.h: Make sure STRLEN() only accepts string literals by @alejandro-colomar in #1260
Add strprefix(), and use it instead of its pattern by @alejandro-colomar in #1152
src/: Simplify, using strpbrk(3) by @alejandro-colomar in #1167
lib/string/strdup/: STRNDUPA(): Reimplement in terms of strndupa(3) by @alejandro-colomar in #1189
Remove dead beef by @alejandro-colomar in #1230
lib/atoi/a2i/: Simplify these macros by calling a2i() by @alejandro-colomar in #1137
strtolower(): Add API, and use it instead of its pattern by @alejandro-colomar in #1211
lib/: sget*ent(): Simplify by calling strdup(3) by @alejandro-colomar in #1146
fields by @alejandro-colomar in #1150
yacc(1) is a dead language; bury it deep in the ground by @alejandro-colomar in #1217
Test expiration date by @ikerexxe in #1233
[scp] Add strcaseprefix(), and use it instead of its pattern by @alejandro-colomar in #1262
valid_field(): Improve readability by @alejandro-colomar in #1208
lib/, src/, tests/: Use the standard countof() instead of our NITEMS() by @alejandro-colomar in #1259
lib/fs/mkstemp/, src/: Move fmkomstemp() to separate files under lib/fs/mkstemp/, and split into mkomstemp() by @alejandro-colomar in #1139
[x][v]aprintf(): Add APIs, and use them instead of [x][v]asprintf(3) by @alejandro-colomar in #1168
lib/get_pid.c: pid_t is a signed integer by @alejandro-colomar in #1264
src/newusers.c: Fix off-by-one benign bug in array declaration by @alejandro-colomar in #1266
Add some wrappers for usual loops around strsep(3) by @alejandro-colomar in #1155
lib/fs/readlink/areadlink.h: areadlink(): Avoid inconditionally using PATH_MAX by @sthibaul in #1222
configure: Fix typo by @sthibaul in #1268
Pre-release 4.18.0-rc1 by @hallyn in #1270
Update man pages for chage, shadow, passwd by @domiborges in #1243
contrib/: Burn it all by @alejandro-colomar in #1274
Pre-release 4.18.0-rc2 by @hallyn in #1275
New Contributors
@matthewhughes934 made their first contribution in #1254
@domiborges made their first contribution in #1243
Release 4.17.4
Changes since 4.17.3:
Alejandro Colomar (12):
Revert "lib/, src/: Use local time for human-readable dates"
lib/getdate.y: Ignore time-zone information and use UTC
src/chfn.c: Partially revert "lib/, src/: Use strsep(3) instead of its pattern"
src/chfn.c: Use stpsep() instead of its pattern
src/chfn.c: Add local variable to refer to the separated field
src/chfn.c: copy_field(): Rename local variable
lib/commonio.c: Rely on the POSIX.1-2008 behavior of realpath(3)
lib/fs/readlink/: readlinknul(): Use ssize_t to simplify
autogen.sh: Promote -Wsign-compare to an error
lib/sizeof.h: ssizeof(): Add signed variant of sizeof
src/lastlog.c: Use ssizeof() to avoid a -Wsign-compare diagnostic
tests/unit/test_xasprintf.c: Fix sign-mismatch diagnostic
Chris Hofstaedtler (2):
configure.ac: stop checking for utmp location
configure.ac: be deterministic about passwd location
Iker Pedrosa (3):
lib/, src/: update audit messages
lib/: audit function for groups
src/: update group audit messages
Michael Vetter (1):
doc/: Remove list of distributions
Serge Hallyn (1):
release 4.17.4
PreviousNext