SepMatchPackage
VOID __stdcall SepMatchPackage(
_TOKEN *Token,
UINT64 DesiredAccess,
VOID *Sid,
UINT64 AceMask,
UINT8 *PackageMatched,
UINT64 *GrantedAccess,
UINT8 *PackagesPresent){
int v7;
int v8;
int v9;
int v10;
_DWORD *v12;
UINT8 *v13;
v7 = AceMask;
v8 = DesiredAccess;
if( *((_DWORD *)Sid + 2) != 2 || *((_BYTE *)Sid + 1) != 2 )
{
*PackagesPresent = 1;
if( (Token->TokenFlags & 0x4000) == 0 || !RtlEqualSid(Token->Package, Sid) )
return;
LABEL_10:
v10 = v7 & v8;
goto LABEL_5;
}
v9 = *((_DWORD *)Sid + 3);
if( v9 == 1 )
{
v10 = AceMask & DesiredAccess;
if( !SepCanTokenMatchAllPackageSid(Token) )
{
*v12 |= v10;
PackageMatched = v13;
goto LABEL_6;
}
LABEL_5:
*(_DWORD *)GrantedAccess |= v10;
LABEL_6:
*PackageMatched = 1;
return;
}
if( v9 == 2 )
goto LABEL_10;
}Referenced by:
SepMaximumAccessCheck
SepMaximumAccessCheckEx
SepNormalAccessCheck
SepNormalAccessCheckEx