]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
src/useradd.c: Refactor long expression into many simple conditionals
authorAlejandro Colomar <alx@kernel.org>
Wed, 18 Feb 2026 20:10:05 +0000 (21:10 +0100)
committerAlejandro Colomar <foss+github@alejandro-colomar.es>
Wed, 18 Feb 2026 20:50:29 +0000 (21:50 +0100)
Co-authored-by: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
src/useradd.c

index 69dd9541d5077cbef382ca2b9b0b2d7e425b4849..330b52f8d5720c6f80a85082aa83bfa77b452246 100644 (file)
@@ -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