summaryrefslogtreecommitdiffstats
path: root/sys/i386/linux/linux_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386/linux/linux_misc.c')
-rw-r--r--sys/i386/linux/linux_misc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/i386/linux/linux_misc.c b/sys/i386/linux/linux_misc.c
index 9834875..323ecdb 100644
--- a/sys/i386/linux/linux_misc.c
+++ b/sys/i386/linux/linux_misc.c
@@ -1204,7 +1204,7 @@ linux_getgroups(p, uap)
pc = p->p_cred;
bsd_gidset = pc->pc_ucred->cr_groups;
- bsd_gidsetsz = pc->pc_ucred->cr_ngroups;
+ bsd_gidsetsz = pc->pc_ucred->cr_ngroups - 1;
/*
* cr_groups[0] holds egid. Returning the whole set
@@ -1213,16 +1213,16 @@ linux_getgroups(p, uap)
*/
if ((ngrp = uap->gidsetsize) == 0) {
- p->p_retval[0] = bsd_gidsetsz - 1;
+ p->p_retval[0] = bsd_gidsetsz;
return (0);
}
- if (ngrp < bsd_gidsetsz - 1)
+ if (ngrp < bsd_gidsetsz)
return (EINVAL);
- ngrp = 1;
+ ngrp = 0;
while (ngrp < bsd_gidsetsz) {
- linux_gidset[ngrp - 1] = bsd_gidset[ngrp];
+ linux_gidset[ngrp] = bsd_gidset[ngrp + 1];
ngrp++;
}
@@ -1230,7 +1230,7 @@ linux_getgroups(p, uap)
ngrp * sizeof(linux_gid_t))))
return (error);
- p->p_retval[0] = ngrp - 1;
+ p->p_retval[0] = ngrp;
return (0);
}
OpenPOWER on IntegriCloud