Skip to content

Commit

Permalink
Always check the group membership list (Issue #5613)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelrsweet committed Jul 16, 2019
1 parent c1a310f commit 666d076
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
3 changes: 3 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ Changes in CUPS v2.2.12
- Fixed some compatibility issues with old releases of CUPS (Issue #5587)
- Fixed a bug in the scheduler job cleanup code (Issue #5588)
- "make" failed with GZIP options (Issue #5595)
- The scheduler now uses both the group's membership list as well as the
various OS-specific membership functions to determine whether a user belongs
to a named group (Issue #5613)
- The scheduler would restart continuously when idle and printers were not
shared (rdar://52561199)
- Fixed a command ordering issue in the Zebra ZPL driver.
Expand Down
23 changes: 16 additions & 7 deletions scheduler/auth.c
Original file line number Diff line number Diff line change
Expand Up @@ -1176,7 +1176,23 @@ cupsdCheckGroup(

groupid = group->gr_gid;

for (i = 0; group->gr_mem[i]; i ++)
{
/*
* User appears in the group membership...
*/

if (!_cups_strcasecmp(username, group->gr_mem[i]))
return (1);
}

#ifdef HAVE_GETGROUPLIST
/*
* If the user isn't in the group membership list, try the results from
* getgrouplist() which is supposed to return the full list of groups a user
* belongs to...
*/

if (user)
{
int ngroups; /* Number of groups */
Expand All @@ -1197,13 +1213,6 @@ cupsdCheckGroup(
if ((int)groupid == (int)groups[i])
return (1);
}

#else
for (i = 0; group->gr_mem[i]; i ++)
{
if (!_cups_strcasecmp(username, group->gr_mem[i]))
return (1);
}
#endif /* HAVE_GETGROUPLIST */
}
else
Expand Down

0 comments on commit 666d076

Please sign in to comment.