patch-2.1.12 linux/kernel/sysctl.c
Next file: linux/mm/mmap.c
Previous file: linux/kernel/sys.c
Back to the patch index
Back to the overall index
- Lines: 35
- Date:
Fri Nov 22 11:50:57 1996
- Orig file:
v2.1.11/linux/kernel/sysctl.c
- Orig date:
Sun Nov 10 20:12:19 1996
diff -u --recursive --new-file v2.1.11/linux/kernel/sysctl.c linux/kernel/sysctl.c
@@ -229,19 +229,23 @@
/* Like in_group_p, but testing against egid, not fsgid */
static int in_egroup_p(gid_t grp)
{
- int i;
-
- if (grp == current->euid)
- return 1;
-
- for (i = 0; i < NGROUPS; i++) {
- if (current->groups[i] == NOGROUP)
- break;
- if (current->groups[i] == grp)
- return 1;
+ if (grp != current->egid) {
+ int i = current->ngroups;
+ if (i) {
+ gid_t *groups = current->groups;
+ do {
+ if (*groups == grp)
+ goto out;
+ groups++;
+ i--;
+ } while (i);
+ }
+ return 0;
}
- return 0;
+out:
+ return 1;
}
+
/* ctl_perm does NOT grant the superuser all rights automatically, because
some sysctl variables are readonly even to root. */
static int test_perm(int mode, int op)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov