]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 305476: Group membership inheritance broken in editusers.cgi (regression) - Patch...
authorlpsolit%gmail.com <>
Tue, 23 Aug 2005 03:59:56 +0000 (03:59 +0000)
committerlpsolit%gmail.com <>
Tue, 23 Aug 2005 03:59:56 +0000 (03:59 +0000)
editusers.cgi

index 6c9fceefeb3b617e4967fa216e5eee88e5b136ba..c055088130117a66d5c8986d5cf584355d5d698e 100755 (executable)
@@ -127,12 +127,11 @@ if ($action eq 'search') {
 
         # Handle selection by group.
         if ($grouprestrict eq '1') {
+            detaint_natural($groupid);
+            my $grouplist = join(',',
+                @{Bugzilla::User->flatten_group_membership($groupid)});
             $query .= " $nextCondition profiles.userid = ugm.user_id " .
-                      'AND ugm.group_id = ?';
-            # We can trick_taint because we use the value in a SELECT only,
-            # using a placeholder.
-            trick_taint($groupid);
-            push(@bindValues, $groupid);
+                      "AND ugm.group_id IN($grouplist)";
         }
         $query .= ' ORDER BY profiles.login_name';
 
@@ -656,7 +655,11 @@ sub userDataToVars {
         qq{SELECT id,
                   COUNT(directmember.group_id) AS directmember,
                   COUNT(regexpmember.group_id) AS regexpmember,
-                  CASE WHEN groups.id IN ($grouplist) THEN 1 ELSE 0 END,
+                  (CASE WHEN (groups.id IN ($grouplist)
+                              AND COUNT(directmember.group_id) = 0
+                              AND COUNT(regexpmember.group_id) = 0
+                             ) THEN 1 ELSE 0 END) 
+                      AS derivedmember,
                   COUNT(directbless.group_id) AS directbless
            FROM groups
            LEFT JOIN user_group_map AS directmember