From 7da0063940a786a13367a8b5f43cf8a9c6dc620e 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 | 31 +++++++++++++++++++------------ lib/chkname.h | 7 ++++++- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/lib/chkname.c b/lib/chkname.c index fbd6ba889..41be18459 100644 --- a/lib/chkname.c +++ b/lib/chkname.c @@ -20,11 +20,29 @@ #include #include #include +#include + #include "defines.h" #include "chkname.h" + 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) { @@ -76,18 +94,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 077134739..73e51bb0b 100644 --- a/lib/chkname.h +++ b/lib/chkname.h @@ -19,8 +19,13 @@ * false - bad name */ -#include "defines.h" +#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);