diff options
author | James Peach <jpeach@samba.org> | 2007-06-13 20:40:50 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:23:18 -0500 |
commit | 2cbe284e59b2baf333e2afafc8bfdfc5faec0514 (patch) | |
tree | ae49d27f20e349dcc07ba949693cdbe02792f257 /source3 | |
parent | 8b2637631e79112408cfce628d3b26aa701f78ef (diff) | |
download | samba-2cbe284e59b2baf333e2afafc8bfdfc5faec0514.tar.gz samba-2cbe284e59b2baf333e2afafc8bfdfc5faec0514.tar.bz2 samba-2cbe284e59b2baf333e2afafc8bfdfc5faec0514.zip |
r23470: Fix supplementary group list truncation for *BSD. We need to pass
the correct group list length and only truncate to NGROUPS_MAX if
it is too long.
(This used to be commit 07f562be7a64a2ded7ec0e6f5910447dc5b8b85f)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/system.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source3/lib/system.c b/source3/lib/system.c index 2cc7ef6ca4..13f743faa4 100644 --- a/source3/lib/system.c +++ b/source3/lib/system.c @@ -1018,10 +1018,16 @@ static int sys_bsd_setgroups(gid_t primary_gid, int setlen, const gid_t *gidset) setlen++; } + if (setlen > max) { + DEBUG(10, ("forced to truncate group list from %d to %d\n", + setlen, max)); + setlen = max; + } + #if defined(BROKEN_GETGROUPS) - ret = sys_broken_setgroups(max, new_gidset ? new_gidset : gidset); + ret = sys_broken_setgroups(setlen, new_gidset ? new_gidset : gidset); #else - ret = setgroups(max, new_gidset ? new_gidset : gidset); + ret = setgroups(setlen, new_gidset ? new_gidset : gidset); #endif if (new_gidset) { |