]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
fix `usermod -rG x y` while user `y` is not in group `x` will cause user `y` add...
authorxyz <gky44px1999@gmail.com>
Sat, 27 Aug 2022 02:23:13 +0000 (19:23 -0700)
committerSerge Hallyn <serge@hallyn.com>
Fri, 7 Oct 2022 01:29:44 +0000 (20:29 -0500)
src/usermod.c

index e51f48a3de90416491414e10db10c79576886b7d..c1a5b2cdc11e0690028f4d7b6d2deecf2cdd21dd 100644 (file)
@@ -716,7 +716,7 @@ static void update_group (void)
                * If rflg+Gflg  is passed in AKA -rG invert is_member flag, which removes
                * mentioned groups while leaving the others.
                */
-               if (Gflg && rflg && was_member) {
+               if (Gflg && rflg) {
                        is_member = !is_member;
                }
 
@@ -765,7 +765,7 @@ static void update_group (void)
                                         "delete '%s' from group '%s'",
                                         user_name, ngrp->gr_name));
                        }
-               } else {
+               } else if (is_member) {
                        /* User was not a member but is now a member this
                         * group.
                         */
@@ -839,7 +839,7 @@ static void update_gshadow (void)
                * If rflg+Gflg  is passed in AKA -rG invert is_member, to remove targeted
                * groups while leaving the user apart of groups not mentioned
                */
-               if (Gflg && rflg && was_member) {
+               if (Gflg && rflg) {
                        is_member = !is_member;
                }