From e5db28a4bf66021a29307a577af637547ef9789b Mon Sep 17 00:00:00 2001 From: xyz Date: Fri, 26 Aug 2022 19:23:13 -0700 Subject: [PATCH] fix `usermod -rG x y` while user `y` is not in group `x` will cause user `y` add into group `x` --- src/usermod.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/usermod.c b/src/usermod.c index e51f48a3..c1a5b2cd 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -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; }