Cygwin: pty: Change how to determine if running as service or not.

This commit is contained in:
Takashi Yano 2019-11-06 21:08:43 +09:00 committed by Corinna Vinschen
parent 44432b93ad
commit e5db0d2fe0

View File

@ -3094,22 +3094,11 @@ pty_master_fwd_thread (VOID *arg)
the helper process is running as privileged user while the helper process is running as privileged user while
slave process is not. This function is used to determine slave process is not. This function is used to determine
if the process is running as a srvice or not. */ if the process is running as a srvice or not. */
static bool inline static bool
is_running_as_service (void) is_running_as_service (void)
{ {
DWORD dwSize = 0; return check_token_membership (well_known_service_sid)
PTOKEN_GROUPS pGroupInfo; || cygheap->user.saved_sid () == well_known_system_sid;
tmp_pathbuf tp;
pGroupInfo = (PTOKEN_GROUPS) tp.w_get ();
NtQueryInformationToken (hProcToken, TokenGroups, pGroupInfo,
2 * NT_MAX_PATH, &dwSize);
for (DWORD i=0; i<pGroupInfo->GroupCount; i++)
if (RtlEqualSid (well_known_service_sid, pGroupInfo->Groups[i].Sid))
return true;
for (DWORD i=0; i<pGroupInfo->GroupCount; i++)
if (RtlEqualSid (well_known_interactive_sid, pGroupInfo->Groups[i].Sid))
return false;
return true;
} }
bool bool