SepCheckForCriticalAceRemoval
INT8 __stdcall SepCheckForCriticalAceRemoval(
VOID *SecurityDescriptor,
VOID *a2,
_SECURITY_SUBJECT_CONTEXT *a3,
_BYTE *a4,
INT64 a5){
void **v5;
_SECURITY_SUBJECT_CONTEXT *v7;
_SECURITY_SUBJECT_CONTEXT *v10;
VOID *ClientToken;
void *retaddr;
v5 = &retaddr;
v7 = a3;
if( a4 )
*a4 = 0;
if( a5 )
*(_BYTE *)a5 = 0;
if( !SepAllowAllApplicationAceRemoval )
{
v10 = a3;
LOBYTE(a3) = KeGetCurrentThread()->PreviousMode;
LOBYTE(v5) = SeSinglePrivilegeCheckEx(SeTcbPrivilege, v10, (_KPROCESSOR_MODE)a3);
if( !(_BYTE)v5 )
{
ClientToken = v7->ClientToken;
if( !v7->ClientToken )
ClientToken = v7->PrimaryToken;
LOBYTE(v5) = SepSidInToken(ClientToken, 0i64, SeTrustedInstallerSid, 0, 0, 0);
if( !(_BYTE)v5 )
LOBYTE(v5) = SepHasCriticalAcesRemoved(SecurityDescriptor, a2, a4, (_BYTE *)a5);
}
}
return(char)v5;
}Referenced by:
SeCheckForCriticalAceRemoval