From: Dirk Mueller Date: Wed, 22 Feb 2006 13:18:56 +0000 (+0000) Subject: backport VG_(getgroups) fix (v5445) X-Git-Tag: svn/VALGRIND_3_1_1~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc7deb98c3f11d2b01dc28a846f18f416a2c50e7;p=thirdparty%2Fvalgrind.git backport VG_(getgroups) fix (v5445) git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_1_BRANCH@5673 --- diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c index c851fc2c0a..e329ace4df 100644 --- a/coregrind/m_libcproc.c +++ b/coregrind/m_libcproc.c @@ -400,17 +400,17 @@ Int VG_(getgroups)( Int size, UInt* list ) # if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) Int i; SysRes sres; - UShort list16[32]; + UShort list16[64]; if (size < 0) return -1; - if (size > 32) size = 32; + if (size > 64) size = 64; sres = VG_(do_syscall2)(__NR_getgroups, size, (Addr)list16); if (sres.isError) return -1; - if (sres.val != size) + if (sres.val > size) return -1; - for (i = 0; i < size; i++) + for (i = 0; i < sres.val; i++) list[i] = (UInt)list16[i]; - return size; + return sres.val; # elif defined(VGP_amd64_linux) SysRes sres;