From: Alejandro Colomar Date: Fri, 10 May 2024 23:34:05 +0000 (+0200) Subject: lib/chkname.[ch]: login_name_max_size(): Add function X-Git-Tag: 4.15.2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=99df9d746ea2e36116accfe0a5fe57082de3d025;p=thirdparty%2Fshadow.git lib/chkname.[ch]: login_name_max_size(): Add function It encapsulates some logic that we may want to reuse elsewhere. Link: Signed-off-by: Alejandro Colomar --- diff --git a/lib/chkname.c b/lib/chkname.c index eedf5db11..995562fa1 100644 --- a/lib/chkname.c +++ b/lib/chkname.c @@ -33,6 +33,20 @@ int allow_bad_names = false; +size_t +login_name_max_size(void) +{ + long conf; + + errno = 0; + conf = sysconf(_SC_LOGIN_NAME_MAX); + if (conf == -1 && errno != 0) + return LOGIN_NAME_MAX; + + return conf; +} + + static bool is_valid_name (const char *name) { if (allow_bad_names) { @@ -84,18 +98,7 @@ static bool is_valid_name (const char *name) bool is_valid_user_name(const char *name) { - long conf; - size_t maxsize; - - errno = 0; - conf = sysconf(_SC_LOGIN_NAME_MAX); - - if (conf == -1 && errno != 0) - maxsize = LOGIN_NAME_MAX; - else - maxsize = conf; - - if (strlen(name) >= maxsize) + if (strlen(name) >= login_name_max_size()) return false; return is_valid_name(name); diff --git a/lib/chkname.h b/lib/chkname.h index 6d545b3f7..4306a8a2c 100644 --- a/lib/chkname.h +++ b/lib/chkname.h @@ -24,8 +24,10 @@ #include #include +#include +extern size_t login_name_max_size(void); extern bool is_valid_user_name (const char *name); extern bool is_valid_group_name (const char *name);