Alejandro Colomar (182):
lib/csrand.c: Fix the lower part of the domain of csrand_uniform()
tests/unit/test_xasprintf.c: Cosmetic
tests/unit/test_xasprintf.c: Fix use of volatile pointer
Makefile.am: Use 'dist-hook' to clean up <tests/unit/Makefile>
lib/typetraits.h: Add macros that give information about a type
tests/unit/test_typetraits.c: Add tests for typetraits.h macros
src/: Use str2[u]l() instead of atoi(3)
lib/get_gid.c: get_gid(): Reimplement in terms of a2i()
lib/, libsubid/, po/, src/: get_gid(): Move function to "atoi/getnum.h"
lib/: Don't open-code get_gid()
lib/get_pid.c: get_pid(): Reimplement in terms of a2i()
lib/: get_pid(): Move function to "atoi/getnum.h"
lib/atoi/getnum.[ch]: get_fd(): Add function for parsing a file descriptor from a string
lib/get_pid.c: get_pidfd_from_fd(): Don't open-code get_fd()
src/usermod.c: getulong_range(): Reimplement in terms of a2ul()
lib/get_uid.c: get_uid(): Reimplement in terms of a2i()
lib/, po/, src/: get_uid(): Move function to "atoi/getnum.h"
lib/limits.c: setrlimit_value(): Reimplement in terms of a2i()
src/usermod.c: Fix const correctness
src/get_subid_owners.c: Use uid_t for holding UIDs (and GIDs)
lib/string/sprintf/, lib/, src/, tests/: Move all sprintf(3)-like APIs to a subdirectory
lib/string/strcpy/, lib/, src/, tests/: Move all copying APIs to a subdirectory
src/su.c: save_caller_context(): Remove unused parameter
src/logoutd.c: Remove unused variable
src/login.c: Remove dead code
lib/, src/: Reduce scope of local variables
lib/shadow.c: my_sgetspent(): Clarify that we're assigning an empty string
lib/getdate.y: NULL doesn't need a cast
lib/, src/: Always pass NULL to time(2)
lib/failure.c: failprint(): Remove dead code
lib/, src/: Add missing include
lib/: Use REALLOCF() instead of its pattern
lib/commonio.c: commonio_open(): MALLOC() and REALLOCF() already set ENOMEM
lib/, src/: Use strchrnul(3) instead of its pattern
src/useradd.c: tallylog_reset(): Use Basename() instead of its pattern
lib/, src/: Use strsep(3) instead of its pattern
lib/gshadow.c: build_list(): Fix forever loop on ENOMEM
lib/gshadow.c: build_list(): Fix REALLOC() nmemb calculation
src/groupmems.c: Fix number of elements in allocation
src/: Use xasprintf() instead of its pattern
lib/string/strcpy/strncat.[ch]: STRNCAT(): Add macro
lib/string/strdup/: XSTRNDUP(), STRNDUPA(): Add macros
lib/utmp.c: Use XSTRNDUP() instead of its pattern
lib/utmp.c: prepare_utmp(): Use xstrdup() instead of its pattern
src/newusers.c: Exit on ENOMEM, by calling xstrdup() instead of strdup(3)
src/logoutd.c: Use STRNDUPA() instead of its pattern
src/logoutd.c: Use STRNCAT() instead of its pattern
lib/string/strcpy/zustr2stp.[ch], tests/: Remove ZUSTR2STP()
lib/string/strdup/xstrdup.[ch], lib/, src/: Move xstrdup() to its own file
lib/alloc.[ch]: xmalloc(): Remove unused function
lib/alloc/, lib/, src/, tests/: Organize the allocation APIs in a new subdirectory
lib/: Use multi-line macro definitions
lib/: Use [[gnu::alloc_size(...)]] on allocation functions
src/: Remove dead code
lib/gshadow.c: Use XREALLOC() instead of silently continuing on ENOMEM
lib/attr.h: Use C23-style attributes
lib/idmapping.c: Use long constants in prctl(2), and remove 0s
Remove id(1)
Remove groups(1)
lib/getdef.c: getdef_num(): Simplify, by calling a2si() instead of str2sl()
lib/getdef.c: getdef_unum(): Fix wrong limit check
lib/getdef.c: getdef_long(): Simplify, by calling a2sl() instead of str2sl()
lib/limits.c: set_prio(): Simplify, by calling str2si() instead of str2sl()
lib/limits.c: set_umask(): Simplify, by calling str2i(mode_t, ) instead of str2ul()
lib/limits.c: setup_limits(): Simplify, by calling a2si() instead of str2sl()
lib/limits.c: setup_limits(): Simplify, by calling str2si() instead of str2sl()
lib/limits.c: setup_limits(): Simplify, by calling str2i(mode_t, ) instead of str2ul()
lib/sgetspent.c: sgetspent(): Simplify, by calling a2sl() instead of str2sl()
lib/shadow.c: my_sgetspent(): Merge 'else {if}' into 'else if'
lib/shadow.c: my_sgetspent(): Remove dead code
lib/shadow.c: my_sgetspent(): Simplify error handling
src/: Use get_[ug]id() where appropriate
src/useradd.c: Simplify, by calling a2sl() instead of str2sl()
src/passwd.c: Simplify, by calling a2sl() instead of str2sl()
src/usermod.c: Simplify, by calling a2sl() instead of str2sl()
src/faillog.c: Simplify, by calling str2sh() instead of str2sl()
src/chage.c: Simplify, by calling a2sl() instead of str2sl()
lib/string/strchr/: stp[c]spn(), strrspn(), strnul(): Add macros and functions
lib/getdef.c: def_load(): Use stp[c]spn() instead of their patterns
src/login_nopam.c: login_access(): Simplify, calling strchr(3)
lib/sssd.c: Style fixes
lib/, src/: Use strrspn() instead of its pattern
contrib, lib/, src/, tests/: Use stpcpy(3) instead of its pattern
contrib/adduser.c: main(): Use strcpy/cat(3) instead of their pattern
lib/port.c: getttyuser(): Remove dead code
lib/port.c: getttyuser(): Use goto to break out of nested loops
lib/port.c: getportent(): Rename goto label
lib/port.c: getportent(): Remove obvious comments
lib/port.c: getportent(): Make sure there are at least 2 ':' in the line
lib/port.c: getportent(): Make sure the aren't too many fields in the CSV
lib/port.c: getportent(): Use equivalent code to parse equally-formatted fields
lib/port.c: getttyuser(): Use pointer arithmetic to simplify
lib/port.c: getportent(): Align variables
lib/port.c: getportent(): Use strsep(3) instead of its pattern
lib/string/strtok/stpsep.[ch]: stpsep(): Add function
lib/, src/: Use stpsep() instead of its pattern
lib/attr.h: ATTR_STRING(): It only accepts one argument
lib/string/strchr/stpcspn.[ch]: stpcspn(): Remove unused function
src/suauth.c: check_su_auth(): Use stpsep() to simplify
lib/nss.c: nss_init(): Use stpsep() instead of strtok_r(3)
src/useradd.c: Use stpsep() to simplify
src/login_nopam.c: login_access(): Use stpsep() to simplify
lib/limits.c: check_logins(): Report LOGIN_ERROR_LOGIN if str2ul() ERANGE
lib/idmapping.c: get_map_ranges(): Rename local variable
lib/idmapping.c: get_map_ranges(): Move range check to a2ul() calls
lib/idmapping.c: get_map_ranges(): Move range check to a2ul() call
lib/idmapping.c: get_map_ranges(): Move range check to a2ul() call
lib/idmapping.c: get_map_ranges(): Remove dead code
lib/idmapping.c: get_map_ranges(): Simplify iterator variables
lib/idmapping.c: get_map_ranges(): Don't exit() from a library function
src/usermod.c: Rename identifiers ralated to [ug]id's
src/usermod.c: Use id_t for parsing uid_t and gid_t
lib/atoi/, : Split files
lib/atoi/strtoi/, tests/: strto[iu](): 1 is an invalid base
lib/chkname.c: An object cannot expand further than the universe in which it resides
lib/, src/: Use local time for human-readable dates
lib/, src/: Use %F instead of %Y-%m-%d with strftime(3)
src/chage.c: print_day_as_date(): Simplify error handling
src/chage.c: print_day_as_date(): Handle errors from strfime(3)
lib/string/strftime.h: STRFTIME(): Tighten macro definition
po/es.po: wsfix
lib/: Move memzero.[ch] under lib/string/memset/
lib/string/memset/: memzero(), strzero(): Return the pointer
lib/: Chain free(strzero(s))
man/userdel.8.xml: Reword '-f'
lib/chkname.c: is_valid{user,group}_name(): Set errno to distinguish the reasons
src/: Invert logic to improve readability
src/: Recommend --badname only if it is useful
src/useradd.c: Add fmkomstemp() to fix mode of </etc/default/useradd>
src/check_subid_range.c: Remove dead code
lib/, src/: Use stpspn() instead of its pattern
lib/port.c: portcmp(): Use strcmp(3) instead of its pattern
lib/gshadow.c: endsgent(): Remove dead assignment
src/suauth.c: check_su_auth(): Use strspn(3) instead of its pattern
src/suauth.c: check_su_auth(): Use pointers to simplify
doc/contributions/introduction.md: Fix typo in link
lib/alloc/realloc.h: Rename macro parameter
lib/alloc/realloc*.h: Always reallocate at least 1 byte
lib/fields.c: Remove dead code
lib/getdef.c: Remove dead code
lib/loginprompt.c: login_prompt(): Use strtcpy() instead of its pattern
lib/fs/readlink/: readlinknul(): Add function
lib/fs/readlink/readlinknul.h: READLINKNUL(): Add macro
lib/: Use readlinknul() instead of its pattern
lib/: Use READLINKNUL() instead of its pattern
lib/fs/readlink/, lib/: areadlink(): Move and rename function
lib/fs/readlink/areadlink.h: Cosmetic changes
lib/fs/readlink/areadlink.h: areadlink(): Use PATH_MAX instead of a magic value
lib/string/strcmp/: streq(): Add function
lib/string/strchr/: strchrcnt(): Add function
lib/list.c: comma_to_list(): Use strchrcnt() instead of its pattern
lib/gshadow.c: endsgent(): Invert logic to reduce indentation
src/login_nopam.c: Rely on the system's MAXHOSTNAMELEN
lib/shadow.c: my_sgetspent(): There can be only one!
lib/, src/: Use NULL instead of 0 as a null pointer constant
share/container-build.sh: Fix path
src/login_nopam.c: resolve_hostname(): Use NI_MAXHOST instead of MAXHOSTNAMELEN with getnameinfo(3)
lib/csrand.c: csrand(): Use read(2) instead of fread(2)
lib/gshadow_.h: STDC is always 1
contrib/, lib/, src/: Use streq() instead of its pattern
lib/, src/: Use !streq() instead of its pattern
lib/, src/: Use strsep(3) instead of strtok(3)
src/: Transform do-while into while
lib/gshadow.c: build_list(): Fix type of parameter
lib/gshadow.c: build_list(): Remove unused variable
lib/gshadow.c: build_list(): Improve variable and parameter names
lib/gshadow.c: build_list(): Remove dead assignment
lib/gshadow.c: sgetsgent(): Remove superfluous condition
lib/gshadow.c: Move zeroing to within build_list()
lib/gshadow.c: Remove dead code
lib/gshadow.c: build_list(): Minimize use of pointer parameters
lib/gshadow.c: build_list(): Compact ++ into previous statement
lib/gshadow.c: sgetsgent(): Be consistent using NULL
lib/gshadow.c: build_list(): Remove second parameter
lib/gshadow.c: Remove redundant variables
lib/gshadow.c: build_list(): Allocate at once
lib/gshadow.c: build_list(): Transform while loop into for loop
lib/sgetgrent.c: sgetgrent(): Fix use-after-free bug
lib/, src/: Use streq() instead of its pattern
lib/, src/: Use !streq() instead of its pattern
lib/fs/readlink/readlinknul.h: readlinknul(): Silence warning
lib/fs/readlink/: readlinknul(): Fix return type
Carles Pina i Estany (1):
Update Catalan translation
Chris Hofstaedtler (4):
lib/find_new_[gu]id.c: include stdint.h for UINT16_MAX/UINT32_MAX
tests/libsubid/04_nss: fix setting basedir
Makefile.am: avoid warning: EXTRA_DIST multiply defined
Remove references to cppw, cpgr
Dennis Baurichter (1):
groupadd, groupmod: Update gshadow file with -U
Eisuke Kawashima (1):
doc(login.defs): fix type of TTYPERM
Iker Pedrosa (20):
share/ansible: convert fedora dockerfile to ansible
share/ansible: create roles
share/.gitignore: add build-out folder
share/ansible: move fedora ci_run to its own file
share/ansible: convert debian dockerfile to ansible
share/ansible: convert alpine dockerfile to ansible
share/ansible: implement distribution selection
share/container-build.sh: update to use Ansible build
doc: update documentation to use Ansible build
CI: use Ansible build in Github Action
share/containers: remove unused dockerfiles
useradd: fix write_full() return value
useradd: fix comparison sign for write_full() return
CI: update Ubuntu repositories configuration
CI: run Install dependencies
workflow
CI: run command as non-root user
CI: install libltdl-dev
CI: fix fedora build problems
CI: avoid cancelling all jobs when one fails
CI: update artifacts action
Marcin Nowakowski (1):
Fix coverity unbound buffer issues
Miroslav Cimerman (1):
man/shadow,man/gshadow: Fix grammar
Pino Toscano (1):
lib/user_busy.c: Include <utmpx.h>
Pranav Lawate (2):
Added option -a for listing active users only, optimized using if aflg,return
Added information in lastlog man page for new option '-a'
Sebastian Gross (3):
man: groupmod: fix misleading param
man: group(add|mod): clarify list format
man: groupmod: remove misleading -N option
Serge Hallyn (7):
tests/: Support run_some from exported tarball
libsubid test makefile: fix a typo
have_range: open the subid db if needed
tests/run_some: make sure unshared root user can descend build dir
CI: fix handling of sources.list
Release 4.17.0-rc1
Release 4.17.0
Tobias Stoeckmann (11):
Fix typos
lib/run_part: Use correct data types
lib/run_part: Unify logging
lib/run_part: Reduce visibility
lib: Fix typo
lib/run_part: Unify error messages
lib/run_part: Adjust style
lib: Eliminate dead code
man/passwd: Fix typo
man/subgid,man/subuid: Fix program list
lib/idmapping.c: Fix get_map_ranges range check
Volker Theile (1):
Allow setting an empty homedir
frostb1te (1):
src/gpasswd.c: is_valid_user_list(): Fix invalid free(3)
kugarocks (1):
src/useradd.c: Add the missing equals sign
sgakerru (1):
src/useradd.c: get_groups(): Fix memory leak