Regression fixes usermod(8):
* Revert an incorrect commit. See #1509 and #1510.
- Update to 4.19.1:
Regression fixes in 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.
* Don't reject a passwordless account ("" or "!").
See #1483 (comment) and #1505.
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=215
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,
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=211
* CI: purge man-db #1241
* passwd: document exit code when PAM has errored #1244
* Man patches #1175
* Quick fix: define E_PAM_ERR in lib/pam_pass.c #1245
* Accept /usr/sbin/nologin as an alternate to /sbin/nologin #1246
* Add LOGIN_ENV_SAFELIST to FOREIGNDEFS #1248
* ci: add gawk as a fedora dependency #1252
* man/useradd.8.xml: fix the CREATE_HOME description #1251
* lib/getdate.y: Restrict the date formats that we support #1238
* newuidmap: better error logging on failure #1254
* Extend basic test cases to check shadow and gshadow entries #1237
* lib/sizeof.h: Make sure STRLEN() only accepts string literals #1260
* Add strprefix(), and use it instead of its pattern #1152
* src/: Simplify, using strpbrk(3) #1167
* lib/string/strdup/: STRNDUPA(): Reimplement in terms of strndupa(3) #1189
* Remove dead beef #1230
* lib/atoi/a2i/: Simplify these macros #1137
* strtolower(): Add API, and use it instead of its pattern #1211
* lib/: sget*ent(): Simplify #1146
* fields #1150
* yacc(1) is a dead language; bury it deep in the ground #1217
* Test expiration date #1233
* [scp] Add strcaseprefix(), and use it instead of its pattern #1262
* valid_field(): Improve readability #1208
* lib/, src/, tests/: Use the standard countof() instead of our NITEMS() #1259
* lib/fs/mkstemp/, src/: Move fmkomstemp() to separate files under
lib/fs/mkstemp/, and split into mkomstemp() #1139
* [x][v]aprintf(): Add APIs, and use them instead of [x][v]asprintf(3) #1168
* lib/get_pid.c: pid_t is a signed integer #1264
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=205
* 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
* configure.ac: stop checking for utmp location
* configure.ac: be deterministic about passwd location
* lib/, src/: update audit messages
* lib/: audit function for groups
* src/: update group audit messages
* doc/: Remove list of distributions
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=200
* chsh: do not warn about blank shell
* lib/: Use strisdigit() instead of its pattern
* lib/string/ctype/strisascii/: strisdigit(): Add function
* lib/string/: Add comments expanding the letter-soup API names
* lib/basename.c: Basename(): Use stprcspn() instead of its pattern
* lib/string/strspn/, lib/, src/: stprspn(), strrspn_(): Split API into function and macro
* lib/string/strspn/, lib/, src/: Move *spn() APIs to separate subdir
* lib/string/strchr/: strrcspn(), stprcspn(): Add function and macro
* src/useradd.c: Use !strcaseeq() instead of its pattern
* lib/, src/: Use strcaseeq() instead of its pattern
* lib/string/strcmp/: strcaseeq(): Add function
* man/useradd.8.xml: Document new exit code 19 (E_BAD_NAME)
* src/useradd.c: E_BAD_NAME: Use a different error code for bad login names
* src/useradd.c: create_home(): Use !streq() instead of its pattern
* lib/chkname.c: is_valid_name(): Use streq() instead of its pattern
* configure.ac, lib/: Use __has_include(<gshadow.h>) instead of HAVE_GSHADOW_H
* configure.ac: Remove unused AC_CHECK_HEADERS() checks
* configure.ac, lib/: Use __has_include(<sys/capability.h>) instead of HAVE_SYS_CAPABILITY_H
* lib/idmapping.c: Unconditionally include <sys/prctl.h>
* lib/: Use __has_include(<security/openpam.h>) instead of HAVE_SECURITY_OPENPAM_H
* lib/: Use __has_include(<security/pam_misc.h>) instead of HAVE_SECURITY_PAM_MISC_H
* configure.ac, lib/: Use __has_include(<sys/random.h>) instead of HAVE_SYS_RANDOM_H
* configure.ac, lib/: Use __has_include(<crypt.h>) instead of HAVE_CRYPT_H
* lib/, src/: motd(): Report errors instead of exiting from library code
* lib/motd.c: motd(): Invert logic to reduce indentation
* lib/, src/, doc/: Remove pw_auth()'s $3 as dead code
* lib/pwauth.*: PW_{ADD,CHANGE,DELETE,FTP,REXEC}: Remove dead code
* lib/, src/, doc/: Remove dead code
* src/vipw.c: Restore the original terminal pgrp after editing
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=193
After repeated similar requests to change the ID ranges we set the
above mentioned value to 201. The max value will stay at 499.
This range should be sufficient and will give us leeway for the
future.
It's not straightforward to find out which static UIDs/GIDs are
used in all packages.
Update shadow-login_defs-suse.patch
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=191
* src/login_nopam.c: Fix compiler warnings #1170
* lib/chkname.c: Put limits for LOGIN_NAME_MAX and sysconf(_SC_LOGIN_NAME_MAX) #1169
* Use HTTPS in link to Wikipedia article on password strength #1164
* lib/attr.h: use C23 attributes only with gcc >= 10 #1172
* login: Fix no-pam authorization regression #1174
* man: Add Portuguese translation #1178
* Update French translation #1177
* Add cheap defense mechanisms #1171
* Add Romanian translation #1176
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=189
* Fix the lower part of the domain of csrand_uniform()
* Fix use of volatile pointer
* Use 'dist-hook' to clean up <tests/unit/Makefile>
* Use str2[u]l() instead of atoi(3)
* Use a2i() in various places
* Fix const correctness
* Use uid_t for holding UIDs (and GIDs)
* Move all sprintf(3)-like APIs to a subdirectory
* Move all copying APIs to a subdirectory
* Fix forever loop on ENOMEM
* Fix REALLOC() nmemb calculation
* Remove id(1)
* Remove groups(1)
* Use local time for human-readable dates
* Use %F instead of %Y-%m-%d with strftime(3)
* is_valid{user,group}_name(): Set errno to distinguish the reasons
* Recommend --badname only if it is useful
* Add fmkomstemp() to fix mode of </etc/default/useradd>
* Fix use-after-free bug in sgetgrent()
* Update Catalan translation
* Remove references to cppw, cpgr
* groupadd, groupmod: Update gshadow file with -U
* Added option -a for listing active users only, optimized using if aflg,return
* Added information in lastlog man page for new option '-a'
* Plenty of code cleanup and clarifications
- Update to 4.17.0 RC1:
Pre-release without changelog
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=184
* The shadow implementations of id(1) and groups(1) are deprecated
in favor of the GNU coreutils and binutils versions.
They will be removed in 4.17.0.
* The rlogind implementation has been removed.
* The libsubid major version has been bumped, since it now requires
specification of the module's free() implementation.
- Update shadow-login_defs-suse.patch
- Add shadow-4.16.0-econf.patch:
Replace deprecated econf_readDirs with econf_readConfig
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=176
* libshadow:
+ Use utmpx instead of utmp. This fixes a regression introduced
in 4.14.0.
+ Fix build error (parameter name omitted).
* Build system:
+ Link correctly with libdl.
+ Install pam configs for chpasswd(8) and newusers(8) when using
./configure --with-libpam --disable-account-tools-setuid.
+ Merge libshadow and libmisc into a single libshadow. This fixes
problems in the linker, which were reported at least in Gentoo.
+ Fix build with musl libc.
+ Support out of tree builds
* useradd(8):
+ Set proper SELinux labels for def_usrtemplate
- Update Serge Hallyns GPG key
- Update shadow-login_defs-unused-by-pam.patch
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=171
* login(1):
+ Fix off-by-one bugs.
* passwd(1):
+ Don't silently truncate passwords of length >= 200 characters.
Instead, accept a length of PASS_MAX, and reject longer ones.
* libshadow:
+ Fix calculation in strtoday(), which caused a wrong half-day
offset in some cases (bsc#1176006)
+ Fix parsing of dates in get_date() (bsc#1176006)
+ Use utmpx instead of utmp. This fixes a regression introduced in
4.14.0.
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=169
On Tumbleweed we have glibc 2.38 already thus string functions
like strlcpy will be present and won't be needed from libbsd.
`readpassphrase()` is then the only function from libbsd not present.
Upstream shadow has an in tree copy of it, that is used when the
`--without-libbsd` flag is passed along.
By relying on glibc 2.38 we don't need to add libbsd and libmd
to our ring0 but can't easily upgrade on SLE.
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=153
* Code cleanup
* Replace utmp interface #757
* new option enable-logind #674
* shadow userdel: add the adaptation to the busybox ps in 01-kill_user_procs.sh
* chsh: warn if root sets a shell not listed in /etc/shells #535
* newgrp: fix potential string injection
* lastlog: fix alignment of Latest header
* Fix yescrypt support #748
* chgpasswd: Fix segfault in command-line options
* gpasswd: Fix password leak
* Add --prefix to passwd, chpasswd and chage #714 (bsc#1206627)
* usermod: fix off-by-one issues #701
* ch(g)passwd: Check selinux permissions upon startup #675
* sub_[ug]id_{add,remove}: fix return values
* chsh: Verify that login shell path is absolute #730
* process_prefix_flag: Drop privileges
* run_parts for groupadd and groupdel #706
* newgrp/useradd: always set SIGCHLD to default
* useradd/usermod: add --selinux-range argument #698
* sssd: skip flushing if executable does not exist #699
* semanage: Do not set default SELinux range #676
* Add control character check #687
* usermod: respect --prefix for --gid option
* Fix null dereference in basename
* newuidmap and newgidmap: support passing pid as fd
* Prevent out of boundary access #633
* Explicitly override only newlines #633
* Correctly handle illegal system file in tz #633
* Supporting vendor given -shells- configuration file #599
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=151
* useradd.8: fix default group ID
* Revert drop of subid_init()
* Georgian translation
* useradd: Avoid taking unneeded space: do not reset non-existent data
in lastlog
* relax username restrictions
* selinux: check MLS enabled before setting serange
* copy_tree: use fchmodat instead of chmod
* copy_tree: don't block on FIFOs
* add shell linter
* copy_tree: carefully treat permissions
* lib/commonio: make lock failures more detailed
* lib: use strzero and memzero where applicable
* Update Dutch translation
* Don't test for NULL before calling free
* Use libc MAX() and MIN()
* chage: Fix regression in print_date
* usermod: report error if homedir does not exist
* libmisc: minimum id check for system accounts
* fix usermod -rG x y wrongly adding a group
* man: add missing space in useradd.8.xml
* lastlog: check for localtime() return value
* Raise limit for passwd and shadow entry length
* Remove adduser-old.c
* useradd: Fix buffer overflow when using a prefix
* Don't warn when failed to open /etc/nsswitch.conf
- Remove patches we took from upstream pre-release:
* shadow-copytree-usermod-fifo.patch
* shadow-chage-format.patch
OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=133