CmpExamineSaclForAuditEvent
INT64 __stdcall CmpExamineSaclForAuditEvent(PVOID SecurityDescriptor, UINT8 *GenerateAudit){
_BYTE *v2;
_BYTE *v3;
int SaclSecurityDescriptor;
WCHAR v6;
void *v7;
void *v8;
unsigned __int8 SaclPresent;
char SaclDefaulted[7];
PACL Sacl;
struct _UNICODE_STRING DestinationString;
UINT8 v14;
UINT8 GenerateAlarm;
Sacl = 0i64;
v3 = v2;
*v2 = 0;
v14 = 0;
GenerateAlarm = 0;
SaclPresent = 0;
DestinationString = 0i64;
SaclSecurityDescriptor = RtlGetSaclSecurityDescriptor(SecurityDescriptor, &SaclPresent, &Sacl, (UINT8 *)SaclDefaulted);
if( SaclSecurityDescriptor >= 0 )
{
if( SaclPresent )
{
v7 = (void *)CmpEffectiveTokenForSubject((INT64 *)GenerateAudit, 0i64);
SeExamineSacl(Sacl, Sacl, v7, 0xF003Fu, 1u, &v14, &GenerateAlarm);
}
RtlInitUnicodeString(&DestinationString, L"Key", v6);
v8 = (void *)CmpEffectiveTokenForSubject((INT64 *)GenerateAudit, 0i64);
SeExamineGlobalSacl(&DestinationString, Sacl, v8, 0xF003Fui64, 1u, &v14, &GenerateAlarm);
if( v14 || GenerateAlarm )
*v3 = 1;
}
return(unsigned int)SaclSecurityDescriptor;
}Referenced by:
No references.