From: Julian Seward Date: Tue, 27 Dec 2005 02:08:03 +0000 (+0000) Subject: VG_(getgroups) fix (Shinichi Noda) X-Git-Tag: svn/VALGRIND_3_2_0~439 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a6bf6bff540e071bfed5c7e06db79e073a4f126;p=thirdparty%2Fvalgrind.git VG_(getgroups) fix (Shinichi Noda) git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5445 --- diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c index 1db9d45d25..3cddcb4406 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) || defined(VGP_ppc64_linux) SysRes sres; diff --git a/docs/internals/3_1_BUGSTATUS.txt b/docs/internals/3_1_BUGSTATUS.txt index fe654e9ae4..06ba2f1dd1 100644 --- a/docs/internals/3_1_BUGSTATUS.txt +++ b/docs/internals/3_1_BUGSTATUS.txt @@ -31,3 +31,4 @@ v5378/80 v5379/81 n-i-bz Clarified leak checker output message v5382 pending n-i-bz AshleyP's --gen-suppressions output fix v5384 wontfix 117096 Weird errors when --log-fd= has invalid value v5396 pending n-i-bz cg_annotate's --sort option broken +v5445 pending n-i-bz VG_(getgroups) fix (Shinichi Noda)