From a269ff2f2b7a85c4cf3183dfcd2e7059df7404d4 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 11 Jan 2014 15:23:53 +0000 Subject: [PATCH] [NTOSKRNL] Small optimization of SepPrivilegeCheck svn path=/trunk/; revision=61582 --- reactos/ntoskrnl/se/priv.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/se/priv.c b/reactos/ntoskrnl/se/priv.c index 7ab2c998850..a89077a8fea 100644 --- a/reactos/ntoskrnl/se/priv.c +++ b/reactos/ntoskrnl/se/priv.c @@ -90,7 +90,7 @@ SepPrivilegeCheck(PTOKEN Token, Required = (PrivilegeControl & PRIVILEGE_SET_ALL_NECESSARY) ? PrivilegeCount : 1; /* Loop all requested privileges until we found the required ones */ - for (i = 0; i < PrivilegeCount && Required > 0; i++) + for (i = 0; i < PrivilegeCount; i++) { /* Loop the privileges of the token */ for (j = 0; j < Token->PrivilegeCount; j++) @@ -107,6 +107,13 @@ SepPrivilegeCheck(PTOKEN Token, { Privileges[i].Attributes |= SE_PRIVILEGE_USED_FOR_ACCESS; Required--; + + /* Check if we have found all privileges */ + if (Required == 0) + { + /* We're done! */ + return TRUE; + } } /* Leave the inner loop */ @@ -115,8 +122,9 @@ SepPrivilegeCheck(PTOKEN Token, } } - /* Return whether we found all required privileges */ - return (Required == 0); + /* When we reached this point, we did not find all privileges */ + NT_ASSERT(Required > 0); + return FALSE; } NTSTATUS