Author: arty Date: Sat Sep 1 14:04:15 2007 New Revision: 28735
URL: http://svn.reactos.org/svn/reactos?rev=28735&view=rev Log: Don't check inherit flags when checking access.
Modified: trunk/reactos/ntoskrnl/ob/obref.c
Modified: trunk/reactos/ntoskrnl/ob/obref.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obref.c?rev=287... ============================================================================== --- trunk/reactos/ntoskrnl/ob/obref.c (original) +++ trunk/reactos/ntoskrnl/ob/obref.c Sat Sep 1 14:04:15 2007 @@ -565,8 +565,11 @@ { /* Get the granted access and validate it */ GrantedAccess = HandleEntry->GrantedAccess; + /* Inherit flags are not a kind of access right, they indicate + * the disposition of access rights. Therefore, they should not + * be considered. */ if ((AccessMode == KernelMode) || - !(~GrantedAccess & DesiredAccess)) + !((~GrantedAccess & DesiredAccess & ~VALID_INHERIT_FLAGS))) { /* Reference the object directly since we have its header */ InterlockedIncrement(&ObjectHeader->PointerCount); @@ -596,6 +599,7 @@ else { /* Requested access failed */ + DPRINT("Rights not granted: %x\n", ~GrantedAccess & DesiredAccess); Status = STATUS_ACCESS_DENIED; } }