RtlpValidObjectAce
UINT8 __stdcall RtlpValidObjectAce(_ACE_HEADER *Ace){
unsigned __int64 AceSize;
_ACE_HEADER v2;
unsigned int v3;
int v4;
__int64 v5;
UCHAR *v6;
__int64 v7;
if( !Ace )
return 0;
AceSize = Ace->AceSize;
if( ((AceSize + 3) & 0xFFFFFFFFFFFFFFFCui64) != AceSize || (unsigned __int16)AceSize < 0xCu )
return 0;
v2 = Ace[2];
v3 = v2.AceType & 1;
v4 = v2.AceType & 2;
v5 = 16 * v3 + 16;
if( !v4 )
v5 = 16 * v3;
if( AceSize >= v5 + 24
&& (v6 = &Ace->AceType + (v4 != 0 ? 28i64 : 12i64), v6[16 * v3] == 1)
&& (v7 = v6[16 * v3 + 1], (unsigned __int8)v7 <= 0xFu)
&& AceSize >= (unsigned __int64)(unsigned int)v5 + 4 * (v7 + 5) )
{
return 1;
}
else
{
return 0;
}
}Referenced by:
RtlValidAcl