Cygwin: fork: fix child process permissions, take 2
VirtualQueryEx, called by fixup_mmaps_after_fork, requires PROCESS_QUERY_INFORMATION permissions per MSDN. However, testing shows that PROCESS_QUERY_LIMITED_INFORMATION is sufficient when running the same code on Windows 8.1 or Windows 10. Fix the code to give the forked child always PROCESS_QUERY_INFORMATION perms on Windows Vista/7 and respective server releases. Revert now unneeded patch to check_token_membership as well. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
@ -819,12 +819,10 @@ child_info::child_info (unsigned in_cb, child_info_types chtype,
|
||||
if (type == _CH_FORK)
|
||||
{
|
||||
perms |= PROCESS_DUP_HANDLE;
|
||||
/* For some reason fork on Windows 7 requires PROCESS_QUERY_INFORMATION
|
||||
rather than just PROCESS_QUERY_LIMITED_INFORMATION when started as a
|
||||
service. */
|
||||
if (wincap.needs_query_information ()
|
||||
&& (cygheap->user.saved_sid () == well_known_system_sid
|
||||
|| check_token_membership (hProcToken, well_known_service_sid)))
|
||||
/* VirtualQueryEx is documented to require PROCESS_QUERY_INFORMATION.
|
||||
That's true for Windows 7, but PROCESS_QUERY_LIMITED_INFORMATION
|
||||
appears to be sufficient on Windows 8 and later. */
|
||||
if (wincap.needs_query_information ())
|
||||
perms |= PROCESS_QUERY_INFORMATION;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user