[newlib-cygwin] Cygwin: fork: fix child process permissions, take 3

Corinna Vinschen corinna@sourceware.org
Sun Mar 3 11:16:00 GMT 2019


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=38dde5f4c4c2e33dfe6dfb9d1bc593d13d85a290

commit 38dde5f4c4c2e33dfe6dfb9d1bc593d13d85a290
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Sun Mar 3 10:59:13 2019 +0100

    Cygwin: fork: fix child process permissions, take 3
    
    Per MSDN VirtualQueryEx requires PROCESS_QUERY_INFORMATION.
    Testing showed that PROCESS_QUERY_LIMITED_INFORMATION is sufficient
    since Windows 8.1.  The assumption that Windows 8 is the same as
    Windows 8 was not correct, it requires PROCESS_QUERY_INFORMATION
    as well.
    
    Fix that by splitting the Windows 8 wincaps into one for Windows 8
    and one for Windows 8.1.  Set needs_query_information for Windows 8.
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/wincap.cc | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc
index 78cc411..5bc9c37 100644
--- a/winsup/cygwin/wincap.cc
+++ b/winsup/cygwin/wincap.cc
@@ -73,6 +73,31 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = {
   {
     is_server:false,
     needs_count_in_si_lpres2:false,
+    needs_query_information:true,
+    has_gaa_largeaddress_bug:false,
+    has_broken_alloc_console:true,
+    has_console_logon_sid:true,
+    has_precise_system_time:true,
+    has_microsoft_accounts:true,
+    has_processor_groups:true,
+    has_broken_prefetchvm:false,
+    has_new_pebteb_region:false,
+    has_broken_whoami:false,
+    has_unprivileged_createsymlink:false,
+    has_unbiased_interrupt_time:true,
+    has_precise_interrupt_time:false,
+    has_posix_unlink_semantics:false,
+    has_case_sensitive_dirs:false,
+    has_posix_rename_semantics:false,
+    no_msv1_0_s4u_logon_in_wow64:false,
+  },
+};
+
+wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = {
+  def_guard_pages:2,
+  {
+    is_server:false,
+    needs_count_in_si_lpres2:false,
     needs_query_information:false,
     has_gaa_largeaddress_bug:false,
     has_broken_alloc_console:true,
@@ -273,9 +298,11 @@ wincapc::init ()
 	      caps = &wincap_7;
 	      break;
 	    case 2:
-	    case 3:
 	      caps = &wincap_8;
 	      break;
+	    case 3:
+	      caps = &wincap_8_1;
+	      break;
 	    default:
 	      caps = &wincap_10_1507;
 	      break;



More information about the Cygwin-cvs mailing list