From f7a609c7fcbcc13f57e6b992e70f20149d582e6f Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 27 Jan 2013 09:50:20 +0000 Subject: [PATCH] [NTOSKRNL] In ObpCheckTraverseAccess() first try to perform a fast traverse check before doing the entire access check. svn path=/trunk/; revision=58239 --- reactos/ntoskrnl/ob/obsecure.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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);