OSDN Git Service

* autoload.cc (SetUserObjectSecurity): Drop.
authorcorinna <corinna>
Thu, 19 Jul 2007 08:36:32 +0000 (08:36 +0000)
committercorinna <corinna>
Thu, 19 Jul 2007 08:36:32 +0000 (08:36 +0000)
* pinfo.cc (pinfo::set_acl): Use NtSetSecurityObject instead of
SetKernelObjectSecurity.
* spawn.cc (spawn_guts): Use NtSetSecurityObject instead of
SetUserObjectSecurity.
* uinfo.cc (cygheap_user::init): Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/autoload.cc
winsup/cygwin/pinfo.cc
winsup/cygwin/spawn.cc
winsup/cygwin/uinfo.cc

index 2a879fb..7f824b4 100644 (file)
@@ -1,5 +1,14 @@
 2007-07-19  Corinna Vinschen  <corinna@vinschen.de>
 
+       * autoload.cc (SetUserObjectSecurity): Drop.
+       * pinfo.cc (pinfo::set_acl): Use NtSetSecurityObject instead of
+       SetKernelObjectSecurity.
+       * spawn.cc (spawn_guts): Use NtSetSecurityObject instead of
+       SetUserObjectSecurity.
+       * uinfo.cc (cygheap_user::init): Ditto.
+
+2007-07-19  Corinna Vinschen  <corinna@vinschen.de>
+
        * cygheap.h (init_cygheap::luid): Remove.
        * mmap.cc (mlock): Accommodate parameter change in call to
        push_thread_privilege.
index 82ecf46..0f076f6 100644 (file)
@@ -357,7 +357,6 @@ LoadDLLfunc (SendMessageA, 16, user32)
 LoadDLLfunc (SetClipboardData, 8, user32)
 LoadDLLfunc (SetProcessWindowStation, 4, user32)
 LoadDLLfunc (SetTimer, 16, user32)
-LoadDLLfunc (SetUserObjectSecurity, 12, user32)
 
 LoadDLLfunc (accept, 12, ws2_32)
 LoadDLLfunc (bind, 12, ws2_32)
index 6e6a85c..8c4702d 100644 (file)
@@ -291,6 +291,7 @@ pinfo::set_acl()
 {
   PACL acl_buf = (PACL) alloca (1024);
   SECURITY_DESCRIPTOR sd;
+  NTSTATUS status;
 
   sec_acl (acl_buf, true, true, cygheap->user.sid (),
           well_known_world_sid, FILE_MAP_READ);
@@ -298,8 +299,8 @@ pinfo::set_acl()
     debug_printf ("InitializeSecurityDescriptor %E");
   else if (!SetSecurityDescriptorDacl (&sd, TRUE, acl_buf, FALSE))
     debug_printf ("SetSecurityDescriptorDacl %E");
-  else if (!SetKernelObjectSecurity (h, DACL_SECURITY_INFORMATION, &sd))
-    debug_printf ("SetKernelObjectSecurity %E");
+  else if ((status = NtSetSecurityObject (h, DACL_SECURITY_INFORMATION, &sd)))
+    debug_printf ("NtSetSecurityObject %lx", status);
 }
 
 const char *
index 69a9043..6043768 100644 (file)
@@ -34,6 +34,7 @@ details. */
 #include "environ.h"
 #include "cygtls.h"
 #include "winf.h"
+#include "ntdll.h"
 
 static suffix_info exe_suffixes[] =
 {
@@ -514,15 +515,18 @@ loop:
       /* allow the child to interact with our window station/desktop */
       HANDLE hwst, hdsk;
       SECURITY_INFORMATION dsi = DACL_SECURITY_INFORMATION;
+      NTSTATUS status;
       DWORD n;
       char wstname[1024];
       char dskname[1024];
 
       hwst = GetProcessWindowStation ();
-      SetUserObjectSecurity (hwst, &dsi, get_null_sd ());
+      if ((status = NtSetSecurityObject (hwst, dsi, get_null_sd ())))
+       system_printf ("NtSetSecurityObject, %lx", status);
       GetUserObjectInformation (hwst, UOI_NAME, wstname, 1024, &n);
       hdsk = GetThreadDesktop (GetCurrentThreadId ());
-      SetUserObjectSecurity (hdsk, &dsi, get_null_sd ());
+      if ((status = NtSetSecurityObject (hdsk, dsi, get_null_sd ())))
+       system_printf ("NtSetSecurityObject, %lx", status);
       GetUserObjectInformation (hdsk, UOI_NAME, dskname, 1024, &n);
       strcat (wstname, "\\");
       strcat (wstname, dskname);
index c582b62..a6d8c41 100644 (file)
@@ -30,6 +30,7 @@ details. */
 #include "child_info.h"
 #include "environ.h"
 #include "pwdgrp.h"
+#include "ntdll.h"
 
 /* Initialize the part of cygheap_user that does not depend on files.
    The information is used in shared.cc for the user shared.
@@ -72,12 +73,15 @@ cygheap_user::init ()
   if (GetSecurityDescriptorDacl (psd, &acl_exists, &dacl.DefaultDacl, &dummy)
       && acl_exists && dacl.DefaultDacl)
     {
+      NTSTATUS status;
+
       /* Set the default DACL and the process DACL */
       if (!SetTokenInformation (hProcToken, TokenDefaultDacl, &dacl,
                                sizeof (dacl)))
        system_printf ("SetTokenInformation (TokenDefaultDacl), %E");
-      if (!SetKernelObjectSecurity (hMainProc, DACL_SECURITY_INFORMATION, psd))
-       system_printf ("SetKernelObjectSecurity, %E");
+      if ((status = NtSetSecurityObject (hMainProc, DACL_SECURITY_INFORMATION,
+                                        psd)))
+       system_printf ("NtSetSecurityObject, %lx", status);
     }
   else
     system_printf("Cannot get dacl, %E");