[ros-diffs] [dgorbachev] 41603: Hack: partially undo r38510 changes to overcome regression (bug #4169).

dgorbachev at svn.reactos.org dgorbachev at svn.reactos.org
Thu Jun 25 00:23:30 CEST 2009


Author: dgorbachev
Date: Thu Jun 25 02:23:29 2009
New Revision: 41603

URL: http://svn.reactos.org/svn/reactos?rev=41603&view=rev
Log:
Hack: partially undo r38510 changes to overcome regression (bug #4169).

Modified:
    trunk/reactos/ntoskrnl/se/semgr.c

Modified: trunk/reactos/ntoskrnl/se/semgr.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/se/semgr.c?rev=41603&r1=41602&r2=41603&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/se/semgr.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/se/semgr.c [iso-8859-1] Thu Jun 25 02:23:29 2009
@@ -638,7 +638,7 @@
     PTOKEN Token;
     NTSTATUS Status;
     PAGED_CODE();
-    
+
     /* Check if this is kernel mode */
     if (PreviousMode == KernelMode)
     {
@@ -654,7 +654,7 @@
             /* Just give the desired access */
             *GrantedAccess = DesiredAccess;
         }
-        
+
         /* Success */
         *AccessStatus = STATUS_SUCCESS;
         return STATUS_SUCCESS;
@@ -688,24 +688,32 @@
     SubjectSecurityContext.ProcessAuditId = NULL;
     SeLockSubjectContext(&SubjectSecurityContext);
 
+    /* FIXME */
     /* Now perform the access check */
-    SeAccessCheck(SecurityDescriptor,
-                  &SubjectSecurityContext,
-                  TRUE,
-                  DesiredAccess,
-                  0,
-                  &PrivilegeSet, //FIXME
-                  GenericMapping,
-                  PreviousMode,
-                  GrantedAccess,
-                  AccessStatus);
+    if (SeAccessCheck(SecurityDescriptor,
+                      &SubjectSecurityContext,
+                      TRUE,
+                      DesiredAccess,
+                      0,
+                      &PrivilegeSet, //FIXME
+                      GenericMapping,
+                      PreviousMode,
+                      GrantedAccess,
+                      AccessStatus))
+    {
+        Status = *AccessStatus;
+    }
+    else
+    {
+        Status = STATUS_ACCESS_DENIED;
+    }
 
     /* Unlock subject context and dereference the token */
     SeUnlockSubjectContext(&SubjectSecurityContext);
     ObDereferenceObject(Token);
 
-    /* Check succeeded */
-    return STATUS_SUCCESS;
+    /* Check succeeded? */
+    return Status;
 }
 
 



More information about the Ros-diffs mailing list