SepDeleteTokenUserAndGroups

VOID __stdcall SepDeleteTokenUserAndGroups(_TOKEN *Token){
  void *IntegrityLevelSidValue; 
  unsigned int IntegrityLevelIndex; 
  _SEP_SID_VALUES_BLOCK *TokenSidValues; 

  IntegrityLevelSidValue = Token->IntegrityLevelSidValue;
  if( IntegrityLevelSidValue )
  {
    IntegrityLevelIndex = Token->IntegrityLevelIndex;
    if( IntegrityLevelIndex != -1 )
    {
      Token->UserAndGroups[IntegrityLevelIndex].Sid = 0i64;
      IntegrityLevelSidValue = Token->IntegrityLevelSidValue;
      Token->IntegrityLevelIndex = -1;
    }
    ExFreePoolWithTag(IntegrityLevelSidValue, 0);
    Token->IntegrityLevelSidValue = 0i64;
  }
  TokenSidValues = Token->TokenSidValues;
  if( TokenSidValues )
  {
    SepDereferenceSidValuesBlock(TokenSidValues, Token, 0i64);
    Token->TokenSidValues = 0i64;
  }
  Token->UserAndGroups = 0i64;
  Token->UserAndGroupCount = 0;
}

Referenced by:

SepTokenDeleteMethod