From: Alejandro Colomar Date: Wed, 18 Feb 2026 20:10:05 +0000 (+0100) Subject: src/useradd.c: Refactor long expression into many simple conditionals X-Git-Tag: 4.20.0-rc1~179 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=8508d61;p=thirdparty%2Fshadow.git src/useradd.c: Refactor long expression into many simple conditionals Co-authored-by: Serge Hallyn Signed-off-by: Serge Hallyn Signed-off-by: Alejandro Colomar --- diff --git a/src/useradd.c b/src/useradd.c index 69dd9541d..330b52f8d 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -2449,18 +2449,27 @@ static void check_uid_range(int rflg, uid_t user_id) static bool should_assign_subuid(void) { - uid_t uid_min; - uid_t uid_max; - unsigned long subuid_count; + uid_t uid_min; + uid_t uid_max; + unsigned long subuid_count; uid_min = getdef_ulong ("UID_MIN", 1000UL); uid_max = getdef_ulong ("UID_MAX", 60000UL); subuid_count = getdef_ulong ("SUB_UID_COUNT", 65536); - return want_subuid_file () && - subuid_count > 0 && sub_uid_file_present () && - (!rflg || Fflg) && - (!user_id || (user_id <= uid_max && user_id >= uid_min)); + if (!want_subuid_file()) + return false; + if (subuid_count == 0) + return false; + if (!sub_uid_file_present()) + return false; + if (rflg && !Fflg) + return false; + if (user_id == 0) + return false; + if (user_id > uid_max || user_id < uid_min) + return false; + return true; } #endif @@ -2468,18 +2477,27 @@ should_assign_subuid(void) static bool should_assign_subgid(void) { - uid_t uid_min; - uid_t uid_max; - unsigned long subgid_count; + uid_t uid_min; + uid_t uid_max; + unsigned long subgid_count; uid_min = getdef_ulong ("UID_MIN", 1000UL); uid_max = getdef_ulong ("UID_MAX", 60000UL); subgid_count = getdef_ulong ("SUB_GID_COUNT", 65536); - return want_subgid_file() && - subgid_count > 0 && sub_gid_file_present() && - (!rflg || Fflg) && - (!user_id || (user_id <= uid_max && user_id >= uid_min)); + if (!want_subgid_file()) + return false; + if (subgid_count == 0) + return false; + if (!sub_gid_file_present()) + return false; + if (rflg && !Fflg) + return false; + if (user_id == 0) + return false; + if (user_id > uid_max || user_id < uid_min) + return false; + return true; } #endif