- 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.
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 */
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