shadow/libmisc
Martin Kletzander baae5b4a06 find_new_[gu]id(): Skip over IDs that are reserved for legacy reasons
Some programs don't support `(uint16_t) -1` or `(uint32_t) -1` as user
or group IDs.  This is because `-1` is used as an error code or as an
unspecified ID, e.g. in `chown(2)` parameters, and in the past, `gid_t`
and `uid_t` have changed width.  For legacy reasons, those values have
been kept reserved in programs today (for example systemd does this; see
the documentation in the link below).

This should not be confused with catching overflow in the ID values,
since that is already caught by our ERANGE checks.  This is about not
using reserved values that have been reserved for legacy reasons.

Link: <https://systemd.io/UIDS-GIDS/>
Reviewed-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
2023-02-20 12:10:02 +01:00
..
.indent.pro Commit the last version from the PLD CVS repository. 2007-10-07 14:36:51 +00:00
addgrps.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
age.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
agetpass.c agetpass.c: Use SPDX tags 2023-02-16 11:29:33 +01:00
audit_help.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
basename.c Update licensing info 2021-12-23 19:36:50 -06:00
bit.c Add bit manipulation functions 2023-01-30 18:24:15 +01:00
btrfs.c Declare read-only data const 2022-08-06 11:27:56 -05:00
chkname.c shadow: use relaxed usernames 2022-09-02 20:27:14 -05:00
chkname.h Update licensing info 2021-12-23 19:36:50 -06:00
chowndir.c Avoid races in chown_tree() 2022-08-17 12:34:01 -05:00
chowntty.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
cleanup_group.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
cleanup_user.c Fix typos 2023-02-16 13:23:08 -06:00
cleanup.c Update licensing info 2021-12-23 19:36:50 -06:00
console.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
copydir.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
csrand.c Unoptimize the higher part of the domain of csrand_uniform() 2023-01-30 18:24:15 +01:00
date_to_str.c Use strlcpy(3) instead of its pattern 2022-12-22 18:03:39 -06:00
entry.c Call NULL by its name 2023-02-02 13:08:30 -06:00
env.c Call NULL by its name 2023-02-02 13:08:30 -06:00
failure.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
failure.h Disable utmpx permanently 2022-12-22 10:31:43 +01:00
find_new_gid.c find_new_[gu]id(): Skip over IDs that are reserved for legacy reasons 2023-02-20 12:10:02 +01:00
find_new_sub_gids.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
find_new_sub_uids.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
find_new_uid.c find_new_[gu]id(): Skip over IDs that are reserved for legacy reasons 2023-02-20 12:10:02 +01:00
getdate.h Update licensing info 2021-12-23 19:36:50 -06:00
getdate.y Use isdigit(3) instead of a reimplementation of it 2021-12-29 02:41:09 +01:00
getgr_nam_gid.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
getrange.c Declare read-only parameters const 2022-08-06 11:27:56 -05:00
gettime.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
hushed.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
idmapping.c Use stpeprintf() where appropriate 2023-02-16 11:29:33 +01:00
idmapping.h Add include for uid_t 2022-08-06 11:27:56 -05:00
isexpired.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
limits.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
list.c Call NULL by its name 2023-02-02 13:08:30 -06:00
log.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
loginprompt.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
mail.c Update licensing info 2021-12-23 19:36:50 -06:00
Makefile.am Add stpecpy() 2023-02-16 11:29:33 +01:00
mempcpy.c Add mempcpy(3) 2023-02-16 11:29:33 +01:00
motd.c Drop register keyword 2022-08-06 11:27:56 -05:00
myname.c Update licensing info 2021-12-23 19:36:50 -06:00
obscure.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
pam_pass_non_interactive.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
pam_pass.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
prefix_flag.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
pwd_init.c Assume SIGTTOU is defined 2022-12-15 16:22:05 -06:00
pwd2spwd.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
pwdcheck.c Call NULL by its name 2023-02-02 13:08:30 -06:00
remove_tree.c Avoid races in remove_tree() 2022-08-17 12:34:01 -05:00
rlogin.c Assume B[0-9]* macros are defined 2022-12-15 16:22:05 -06:00
root_flag.c libmisc/root_flag: add tips for --root flag only support abspath 2022-08-06 15:04:06 -05:00
salt.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
setugid.c Update licensing info 2021-12-23 19:36:50 -06:00
setupenv.c Merge pull request #451 from hallyn/2021-12-05/license 2022-01-02 18:38:42 -06:00
shell.c Call NULL by its name 2023-02-02 13:08:30 -06:00
stpecpy.c Add stpecpy() 2023-02-16 11:29:33 +01:00
stpeprintf.c Add stpeprintf() 2023-02-16 11:29:33 +01:00
strtoday.c strtoday.c: remove unused defines.h inclusion 2022-12-22 10:39:45 -06:00
sub.c Update licensing info 2021-12-23 19:36:50 -06:00
sulog.c Call NULL by its name 2023-02-02 13:08:30 -06:00
ttytype.c ttytype(): Fix race 2023-02-09 10:03:03 -06:00
tz.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
ulimit.c Remove comments that survived the Helicoprion 2022-12-15 16:22:05 -06:00
user_busy.c Fix typo 2023-02-16 13:23:08 -06:00
utmp.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
valid.c Update licensing info 2021-12-23 19:36:50 -06:00
xgetgrgid.c Fix comments 2023-02-16 13:23:08 -06:00
xgetgrnam.c Fix comments 2023-02-16 13:23:08 -06:00
xgetpwnam.c libmisc: fix grammar 2023-01-26 22:44:39 -06:00
xgetpwuid.c Fix comments 2023-02-16 13:23:08 -06:00
xgetspnam.c Fix comments 2023-02-16 13:23:08 -06:00
xgetXXbyYY.c Fix comments 2023-02-16 13:23:08 -06:00
xmalloc.c Don't test for NULL before calling free(3) 2022-09-29 16:03:53 +02:00
yesno.c Remove superfluous casts 2023-02-09 10:03:03 -06:00