Files
shadow/lib
Alejandro Colomar ad307ee42a lib/chkname.c: is_valid_user_name(): Remove unnecessary check
If (maxsize == -1), then ((size_t)maxsize == SIZE_MAX).  And no size can
ever be >= SIZE_MAX, so it will never return false if sysconf(3) reports
an unlimited user-name size via returning -1.  Well, to be pedantic,
that disallows a user-name siz of precisely SIZE_MAX bytes when
sysconf(3) returns -1.  However, that's probably a good thing; such a
long user name might trigger Undefined Behavior somewhere else, so be
cautious and disallow it.  I hope nobody will be using the entire
address space for a user name.

The commit that introduced that check missed that this code had always
supported unlimited user-name sizes since it was introduced by Iker in
3b7cc05387 ("lib: replace `USER_NAME_MAX_LENGTH` macro"), and
6be85b0baf ("lib/chkname.c: Use tmp variable to avoid a -Wsign-compare
warning") even clarified this in the commit message.

So, while the code in 6a1f45d932 ("lib/chkname.c: Support unlimited
user name lengths") wasn't bad per se, the commit message was incorrect.
What that patch did was adding code for handling EINVAL (or any other
errors that a future kernel might add).

To be more pedantically correct, that commit also allowed (under certain
circumstances, user names of SIZE_MAX bytes, but those were originally
allowed (by accident), and only became disallowed in 403a2e3771
("lib/chkname.c: Take NUL byte into account").  But again, let's
disallow those, just to be cautious.

Link: <https://github.com/shadow-maint/shadow/pull/935>
Link: <https://github.com/shadow-maint/shadow/pull/935#discussion_r1477429492>
See-also: 6be85b0baf ("lib/chkname.c: Use tmp variable to avoid a -Wsign-compare warning")
Fixes: 6a1f45d932 ("lib/chkname.c: Support unlimited user name lengths")
Reviewed-by: Iker Pedrosa <ipedrosa@redhat.com>
Cc: Tobias Stoeckmann <tobias@stoeckmann.org>
Cc: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
2024-02-13 16:13:05 -06:00
..
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-02-24 12:44:14 -06:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2021-12-23 19:36:50 -06:00
2021-12-23 19:36:50 -06:00
2023-12-14 07:40:40 -06:00
2023-08-31 08:55:26 +02:00
2023-03-31 09:53:40 -05:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2021-12-23 19:36:50 -06:00
2021-12-23 19:36:50 -06:00
2023-06-08 09:05:39 -05:00
2023-08-31 08:55:26 +02:00
2022-12-22 11:43:29 +01:00
2023-12-14 07:40:40 -06:00
2023-09-01 09:39:23 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2022-12-22 11:43:29 +01:00
2023-08-31 08:55:26 +02:00
2021-12-23 19:36:50 -06:00
2022-05-24 07:49:11 -05:00
2024-01-05 15:41:12 -06:00
2023-08-31 08:55:26 +02:00
2021-12-23 19:36:50 -06:00
2023-08-31 08:55:26 +02:00
2022-05-24 07:49:11 -05:00
2023-09-01 09:39:23 +02:00
2023-08-31 08:55:26 +02:00
2021-12-23 19:36:50 -06:00
2021-12-23 19:36:50 -06:00
2023-01-26 22:44:39 -06:00
2023-09-01 09:39:23 +02:00
2023-06-08 09:05:39 -05:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2010-03-18 19:23:00 +00:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-12-14 07:40:40 -06:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00
2023-08-31 08:55:26 +02:00