diff --git a/lib/chkname.c b/lib/chkname.c index 79fa29c3..fbd6ba88 100644 --- a/lib/chkname.c +++ b/lib/chkname.c @@ -76,17 +76,21 @@ static bool is_valid_name (const char *name) bool is_valid_user_name(const char *name) { - long maxsize; + long conf; + size_t maxsize; errno = 0; - maxsize = sysconf(_SC_LOGIN_NAME_MAX); - if (maxsize == -1 && errno != 0) - maxsize = LOGIN_NAME_MAX; + conf = sysconf(_SC_LOGIN_NAME_MAX); - if (strlen(name) >= (size_t)maxsize) + if (conf == -1 && errno != 0) + maxsize = LOGIN_NAME_MAX; + else + maxsize = conf; + + if (strlen(name) >= maxsize) return false; - return is_valid_name (name); + return is_valid_name(name); }