From 6a1f45d932c859725bc175f96f7c42b9ccc20ea4 Mon Sep 17 00:00:00 2001 From: Tobias Stoeckmann Date: Sat, 3 Feb 2024 01:10:22 +0100 Subject: [PATCH] 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 --- lib/chkname.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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); -- 2.47.2