aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/grp.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/grp.cc')
-rw-r--r--winsup/cygwin/grp.cc12
1 files changed, 3 insertions, 9 deletions
diff --git a/winsup/cygwin/grp.cc b/winsup/cygwin/grp.cc
index 4a475c8..df5a14e 100644
--- a/winsup/cygwin/grp.cc
+++ b/winsup/cygwin/grp.cc
@@ -347,8 +347,8 @@ internal_getgroups (int gidsetsize, __gid32_t *grouplist, cygpsid * srchsid)
/* If impersonated, use impersonation token. */
if (cygheap->user.issetuid ())
hToken = cygheap->user.token ();
- else if (!OpenProcessToken (hMainProc, TOKEN_QUERY, &hToken))
- hToken = NULL;
+ else
+ hToken = hProcImpToken;
}
if (hToken)
{
@@ -379,19 +379,13 @@ internal_getgroups (int gidsetsize, __gid32_t *grouplist, cygpsid * srchsid)
grouplist[cnt] = gr->gr_gid;
++cnt;
if (gidsetsize && cnt > gidsetsize)
- {
- if (!cygheap->user.issetuid ())
- CloseHandle (hToken);
- goto error;
- }
+ goto error;
break;
}
}
}
else
debug_printf ("%d = GetTokenInformation(NULL) %E", size);
- if (!cygheap->user.issetuid ())
- CloseHandle (hToken);
return cnt;
}