Cygwin: pty: Change how to determine if running as service or not.
This commit is contained in:
		
							parent
							
								
									44432b93ad
								
							
						
					
					
						commit
						e5db0d2fe0
					
				|  | @ -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 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue