From 0a82f829edd95f364c19ab20da4a78866ab34d50 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 23 Mar 2010 00:16:14 +0000 Subject: [PATCH] [NTOSKRNL] NtAccessCheck: - Fix returned status if the token is not an impersonation token. - Add a check for the token impersonation level. svn path=/trunk/; revision=46347 --- reactos/ntoskrnl/se/semgr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/se/semgr.c b/reactos/ntoskrnl/se/semgr.c index d9d7eb198a7..38b1274970c 100644 --- a/reactos/ntoskrnl/se/semgr.c +++ b/reactos/ntoskrnl/se/semgr.c @@ -743,7 +743,15 @@ NtAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor, { DPRINT1("No impersonation token\n"); ObDereferenceObject(Token); - return STATUS_ACCESS_DENIED; + return STATUS_NO_IMPERSONATION_TOKEN; + } + + /* Check the impersonation level */ + if (Token->ImpersonationLevel < SecurityIdentification) + { + DPRINT1("Impersonation level < SecurityIdentification\n"); + ObDereferenceObject(Token); + return STATUS_BAD_IMPERSONATION_LEVEL; } /* Set up the subject context, and lock it */