From: James Peach Date: Wed, 13 Jun 2007 20:40:50 +0000 (+0000) Subject: r23470: Fix supplementary group list truncation for *BSD. We need to pass X-Git-Tag: samba-misc-tags/initial-v3-0-unstable~210 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=07f562be7a64a2ded7ec0e6f5910447dc5b8b85f;p=thirdparty%2Fsamba.git 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. --- diff --git a/source/lib/system.c b/source/lib/system.c index 2cc7ef6ca42..13f743faa4f 100644 --- a/source/lib/system.c +++ b/source/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) {