SepCleanupMarkedForDeletionEntries
VOID __stdcall SepCleanupMarkedForDeletionEntries(){
_RTL_DYNAMIC_HASH_TABLE *bf_0;
INT64 *SingletonEntryFromIndexNumber;
INT64 *v2;
unsigned __int8 v3;
_AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION *v4;
unsigned __int64 v5;
_RTL_DYNAMIC_HASH_TABLE_ENUMERATOR *v6;
unsigned int *v7;
_RTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator;
memset(&Enumerator, 0, sizeof(Enumerator));
bf_0 = (_RTL_DYNAMIC_HASH_TABLE *)SeLuidToIndexMapping[1]._bf_0;
RtlInitEnumerationHashTable(bf_0, &Enumerator);
while( 1 )
{
v6 = RtlEnumerateEntryHashTable(bf_0, &Enumerator);
v7 = (unsigned int *)v6;
if( !v6 )
break;
if( *((_BYTE *)&v6[1].CurEntry + 8) && RtlRemoveEntryHashTable(bf_0, &v6->HashEntry, 0i64) )
{
SingletonEntryFromIndexNumber = (INT64 *)SepGetSingletonEntryFromIndexNumber(v7[10]);
v2 = SingletonEntryFromIndexNumber;
if( SingletonEntryFromIndexNumber )
{
v3 = ExAcquireSpinLockExclusive(SingletonEntryFromIndexNumber);
v4 = (_AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION *)v2[2];
v2[1] = 0i64;
v5 = v3;
if( v4 )
{
AuthzBasepFreeSecurityAttributesList(v4);
ExFreePoolWithTag((PVOID)v2[2], 0x74446553u);
v2[2] = 0i64;
}
ExReleaseSpinLockExclusiveFromDpcLevel(v2);
__writecr8(v5);
}
_bittestandreset((signed __int32 *)SeLuidToIndexMapping[3]._bf_0, v7[10]);
ExFreePoolWithTag(v7, 0);
}
}
RtlEndEnumerationHashTable(bf_0, &Enumerator);
}Referenced by:
SepAddLuidToIndexEntry