Now, the functions sys_get/setgroups() were changed (2.1.10 -> 2.1.11)
to use copy_from/to_user() to get the entire list of supplementory groups
in one step instead of copying the group ids one by one. It is easy to
see that this breaks the functions.
The following patches solve the problem. It seems that there are also
other parts of the kernel's task struct that use `int' (for example)
instead of the typedefed synonyms.
Cheers
Claus
--- kernel/sys.c~ Thu Nov 21 14:46:11 1996
+++ kernel/sys.c Thu Nov 21 14:52:46 1996
@@ -699,7 +699,7 @@
asmlinkage int sys_getgroups(int gidsetsize, gid_t *grouplist)
{
int i;
- int * groups;
+ gid_t * groups;
if (gidsetsize < 0)
return -EINVAL;
--- include/linux/sched.h~ Tue Nov 19 02:05:54 1996
+++ include/linux/sched.h Thu Nov 21 14:48:22 1996
@@ -200,7 +200,7 @@
int session;
/* boolean value for session group leader */
int leader;
- int groups[NGROUPS];
+ gid_t groups[NGROUPS];
/*
* pointers to (original) parent process, youngest child, younger
sibling,
* older sibling, respectively. (p->father can be replaced with
-- Claus_Heine@ac2.maus.de