RtlpValidAttributeAce
UINT8 __stdcall RtlpValidAttributeAce(ACE_HEADER *Ace){
unsigned __int64 AceSize;
int AceFlags;
UINT8 result;
result = 0;
if( Ace )
{
AceSize = Ace->AceSize;
if( ((AceSize + 3) & 0xFFFFFFFFFFFFFFFCui64) == AceSize && (unsigned int)AceSize >= 0x10 && Ace[2].AceType == 1 )
{
AceFlags = Ace[2].AceFlags;
if( (unsigned __int8)AceFlags <= 0xFu
&& AceSize >= (unsigned __int64)(unsigned int)(4 * AceFlags + 16) + 20
&& RtlpValidRelativeAttribute(
(_CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 *)(&Ace[2].AceType + (unsigned int)(4 * AceFlags + 8)),
(unsigned int)(AceSize - (4 * AceFlags + 8) - 8)) )
{
return 1;
}
}
}
return result;
}Referenced by:
RtlValidAcl