SepValidLabelSubjectContext

UINT8 __stdcall SepValidLabelSubjectContext(_SECURITY_SUBJECT_CONTEXT *SubjectContext, VOID *Label, UINT8 Flags){
  VOID *SeMediumMandatorySid; 
  void *ClientToken; 
  _ETHREAD *CurrentThread; 
  _KPROCESSOR_MODE v8; 
  UINT8 result; 
  _SID_AND_ATTRIBUTES IntegritySA; 
  UINT8 pbDominate; 

  pbDominate = 0;
  SeMediumMandatorySid = Label;
  IntegritySA = 0i64;
  if( !Label )
    SeMediumMandatorySid = SeExports->SeMediumMandatorySid;
  ClientToken = SubjectContext->ClientToken;
  if( !SubjectContext->ClientToken )
    ClientToken = SubjectContext->PrimaryToken;
  if( *((_DWORD *)ClientToken + 48) == 2 && *((int *)ClientToken + 49) < 2 )
    return 0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquireResourceSharedLite(*((_QWORD *)ClientToken + 6), 1);
  SepCopyTokenIntegrity((_TOKEN *)ClientToken, &IntegritySA);
  ExReleaseResourceLite(*((PERESOURCE *)ClientToken + 6));
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  if( (Flags & 8) != 0 )
  {
    if( RtlSidDominates(SeMediumMandatorySid, SeExports->SeMediumMandatorySid, &pbDominate) < 0 )
      return 0;
    if( !pbDominate )
      SeMediumMandatorySid = SeExports->SeMediumMandatorySid;
  }
  if( RtlSidDominates(IntegritySA.Sid, SeMediumMandatorySid, &pbDominate) < 0 )
    return 0;
  result = pbDominate;
  if( !pbDominate )
  {
    LOBYTE(v8) = 1;
    return SeSinglePrivilegeCheckEx((_LUID)SeRelabelPrivilege, SubjectContext, v8);
  }
  return result;
}

Referenced by:

RtlpSetSecurityObject