From: Tobias Stoeckmann Date: Sat, 3 Feb 2024 00:10:22 +0000 (+0100) Subject: lib/chkname.c: Support unlimited user name lengths X-Git-Tag: 4.15.0-rc2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6a1f45d932c8;p=thirdparty%2Fshadow.git lib/chkname.c: Support unlimited user name lengths If the system does not have a user name length limit, support it accordingly. If the system has no _SC_LOGIN_NAME_MAX, use LOGIN_NAME_MAX constant instead. Signed-off-by: Tobias Stoeckmann --- diff --git a/lib/chkname.c b/lib/chkname.c index 1c5963496..40069932c 100644 --- a/lib/chkname.c +++ b/lib/chkname.c @@ -20,6 +20,8 @@ #ident "$Id$" #include +#include +#include #include "defines.h" #include "chkname.h" @@ -74,13 +76,16 @@ static bool is_valid_name (const char *name) bool is_valid_user_name (const char *name) { - size_t maxlen; + long maxlen; /* * User names length are limited by the kernel */ + errno = 0; maxlen = sysconf(_SC_LOGIN_NAME_MAX); - if (strlen(name) >= maxlen) + if (maxlen == -1 && errno != 0) + maxlen = LOGIN_NAME_MAX; + if (maxlen != -1 && strlen(name) >= (size_t)maxlen) return false; return is_valid_name (name);