diff --git a/reactos/ntoskrnl/ob/obsecure.c b/reactos/ntoskrnl/ob/obsecure.c index 3982258fcd6..fbc3c8e2ebb 100644 --- a/reactos/ntoskrnl/ob/obsecure.c +++ b/reactos/ntoskrnl/ob/obsecure.c @@ -301,6 +301,20 @@ ObpCheckTraverseAccess(IN PVOID Object, return FALSE; } + /* First try to perform a fast traverse check + * If it fails, then the entire access check will + * have to be done. + */ + Result = SeFastTraverseCheck(SecurityDescriptor, + AccessState, + FILE_WRITE_DATA, + AccessMode); + if (Result) + { + ObReleaseObjectSecurity(SecurityDescriptor, SdAllocated); + return TRUE; + } + /* Lock the security context */ SeLockSubjectContext(&AccessState->SubjectSecurityContext);