I used size_t because:
sysconf(3) can return -1 if the value is not supported, but then it can
only mean that there's no limit. Having no limit is the same as having
a limit of SIZE_MAX (to which -1 is converted).
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Cherry-picked-from:
6be85b0bafb5 ("lib/chkname.c: Use tmp variable to avoid a -Wsign-compare warning")
[alx: This is to cherry-pick the next commit without conflict]
Link: <https://github.com/shadow-maint/shadow/pull/801>
Link: <https://github.com/shadow-maint/shadow/pull/935>
Cc: Serge Hallyn <serge@hallyn.com>
Cc: Tobias Stoeckmann <tobias@stoeckmann.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
bool is_valid_user_name (const char *name)
{
+ size_t maxlen;
+
/*
* User names length are limited by the kernel
*/
- if (strlen (name) > sysconf(_SC_LOGIN_NAME_MAX)) {
+ maxlen = sysconf(_SC_LOGIN_NAME_MAX);
+ if (strlen(name) > maxlen)
return false;
- }
return is_valid_name (name);
}