summaryrefslogtreecommitdiffstats
path: root/winsup
diff options
context:
space:
mode:
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/grp.cc5
2 files changed, 7 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 53c506ef3..93d5eabee 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-16 Corinna Vinschen <corinna@vinschen.de>
+
+ * grp.cc (internal_getgroups): Drop local buf. Allocate groups
+ directly using alloca.
+
2008-04-14 Corinna Vinschen <corinna@vinschen.de>
* postinstall: Fix copy/paste bug.
diff --git a/winsup/cygwin/grp.cc b/winsup/cygwin/grp.cc
index 5c35be590..e9e657d88 100644
--- a/winsup/cygwin/grp.cc
+++ b/winsup/cygwin/grp.cc
@@ -365,10 +365,9 @@ internal_getgroups (int gidsetsize, __gid32_t *grouplist, cygpsid * srchsid)
if (GetTokenInformation (hToken, TokenGroups, NULL, 0, &size)
|| GetLastError () == ERROR_INSUFFICIENT_BUFFER)
{
- char buf[size];
- TOKEN_GROUPS *groups = (TOKEN_GROUPS *) buf;
+ PTOKEN_GROUPS groups = (PTOKEN_GROUPS) alloca (size);
- if (GetTokenInformation (hToken, TokenGroups, buf, size, &size))
+ if (GetTokenInformation (hToken, TokenGroups, groups, size, &size))
{
cygsid sid;