SeCreateClientSecurityFromSubjectContext

NTSTATUS __stdcall SeCreateClientSecurityFromSubjectContext(
        PSECURITY_SUBJECT_CONTEXT SubjectContext,
        PSECURITY_QUALITY_OF_SERVICE ClientSecurityQos,
        BOOL ServerIsRemote,
        PSECURITY_CLIENT_CONTEXT ClientContext){
  _ADAPTER_OBJECT *ClientToken; 
  VOID **v5; 
  char v6; 
  int v11; 
  int ClientSecurity; 
  VOID **v14; 
  UINT8 pbDominate; 

  ClientToken = (_ADAPTER_OBJECT *)SubjectContext->ClientToken;
  v5 = 0i64;
  v6 = 0;
  pbDominate = 0;
  if( !ClientToken )
    ClientToken = (_ADAPTER_OBJECT *)SubjectContext->PrimaryToken;
  ObfReferenceObject(ClientToken);
  if( SubjectContext->ClientToken )
  {
    v11 = 2;
    RtlSidDominatesForTrust(
      *((VOID **)SubjectContext->PrimaryToken + 138),
      *((VOID **)SubjectContext->ClientToken + 138),
      &pbDominate);
    if( !pbDominate )
    {
      v6 = 1;
      v5 = v14;
    }
  }
  else
  {
    v11 = 1;
  }
  ClientSecurity = SepCreateClientSecurityEx(
                     ClientToken,
                     (__int64)ClientSecurityQos,
                     ServerIsRemote,
                     v11,
                     0,
                     SubjectContext->ImpersonationLevel,
                     0,
                     0i64,
                     v6,
                     v5,
                     (__int64)ClientContext);
  if( ClientSecurity < 0 || !ClientSecurityQos->ContextTrackingMode )
    HalPutDmaAdapter(ClientToken);
  return ClientSecurity;
}

Referenced by:

No references.