mirror of
https://github.com/shadow-maint/shadow.git
synced 2024-11-30 13:34:21 +08:00
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 <tobias@stoeckmann.org>
This commit is contained in:
parent
403a2e3771
commit
6a1f45d932
@ -20,6 +20,8 @@
|
||||
#ident "$Id$"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#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);
|
||||
|
Loading…
Reference in New Issue
Block a user