|
From: <sv...@va...> - 2006-02-22 13:19:06
|
Author: dirk
Date: 2006-02-22 13:18:56 +0000 (Wed, 22 Feb 2006)
New Revision: 5673
Log:
backport VG_(getgroups) fix (v5445)
Modified:
branches/VALGRIND_3_1_BRANCH/coregrind/m_libcproc.c
Modified: branches/VALGRIND_3_1_BRANCH/coregrind/m_libcproc.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_1_BRANCH/coregrind/m_libcproc.c 2006-02-22 13:18:=
14 UTC (rev 5672)
+++ branches/VALGRIND_3_1_BRANCH/coregrind/m_libcproc.c 2006-02-22 13:18:=
56 UTC (rev 5673)
@@ -400,17 +400,17 @@
# 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 =3D 32;
+ if (size > 64) size =3D 64;
sres =3D VG_(do_syscall2)(__NR_getgroups, size, (Addr)list16);
if (sres.isError)
return -1;
- if (sres.val !=3D size)
+ if (sres.val > size)
return -1;
- for (i =3D 0; i < size; i++)
+ for (i =3D 0; i < sres.val; i++)
list[i] =3D (UInt)list16[i];
- return size;
+ return sres.val;
=20
# elif defined(VGP_amd64_linux)
SysRes sres;
|