ObCreateKernelObjectsSD
INT64 __stdcall ObCreateKernelObjectsSD(PSECURITY_DESCRIPTOR SecurityDescriptor){
int Acl;
int v3;
int v4;
UINT32 v5;
struct _ACL *PoolWithTag;
ACL *v7;
Acl = RtlCreateSecurityDescriptor(SecurityDescriptor, 1ui64);
if( Acl >= 0 )
{
v3 = RtlLengthSid(SeWorldSid);
v4 = RtlLengthSid(SeAliasAdminsSid) + v3;
v5 = RtlLengthSid(SeLocalSystemSid) + 44 + v4;
PoolWithTag = (struct _ACL *)ExAllocatePoolWithTag(PagedPool, v5, 0x6C636144ui64);
v7 = PoolWithTag;
if( PoolWithTag )
{
Acl = RtlCreateAcl(PoolWithTag, v5, 2u);
if( Acl >= 0 )
{
Acl = RtlpAddKnownAce(v7, 2ui64, 0i64, 0x20003ui64, SeWorldSid, 0);
if( Acl >= 0 )
{
Acl = RtlpAddKnownAce(v7, 2ui64, 0i64, 0xF000Fui64, SeAliasAdminsSid, 0);
if( Acl >= 0 )
{
Acl = RtlpAddKnownAce(v7, 2ui64, 0i64, 0xF000Fui64, SeLocalSystemSid, 0);
if( Acl >= 0 )
{
Acl = RtlSetDaclSecurityDescriptor(SecurityDescriptor, 1u, v7, 0);
if( Acl >= 0 )
{
v7 = 0i64;
Acl = 0;
}
}
}
}
}
if( v7 )
ExFreePoolWithTag(v7, 0);
}
else
{
return(unsigned int)-1073741670;
}
}
return(unsigned int)Acl;
}Referenced by:
MiCreatePartitionNamespace
ObpInitializeRootNamespace