From 99df9d746ea2e36116accfe0a5fe57082de3d025 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Sat, 11 May 2024 01:34:05 +0200 Subject: [PATCH] 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 --- lib/chkname.c | 27 +++++++++++++++------------ lib/chkname.h | 2 ++ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/chkname.c b/lib/chkname.c index eedf5db1..995562fa 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 6d545b3f..4306a8a2 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);