svn path=/trunk/; revision=25648
RtlEqualPrefixSid(IN PSID Sid1_,
IN PSID Sid2_)
{
- PISID Sid1 = Sid1_;
- PISID Sid2 = Sid2_;
+ PISID Sid1 = Sid1_;
+ PISID Sid2 = Sid2_;
+ SIZE_T SidLen;
- PAGED_CODE_RTL();
+ PAGED_CODE_RTL();
+
+ if (Sid1->SubAuthorityCount == Sid2->SubAuthorityCount)
+ {
+ SidLen = FIELD_OFFSET(SID,
+ SubAuthority[Sid1->SubAuthorityCount]);
+ return RtlCompareMemory(Sid1,
+ Sid2,
+ SidLen) == SidLen;
+ }
- return(Sid1->SubAuthorityCount == Sid2->SubAuthorityCount &&
- !RtlCompareMemory(Sid1, Sid2,
- (Sid1->SubAuthorityCount - 1) * sizeof(DWORD) + 8));
+ return FALSE;
}