RtlGetAppContainerNamedObjectPath

NTSTATUS __stdcall RtlGetAppContainerNamedObjectPath(
        PVOID Token,
        PVOID AppContainerSid,
        UINT8 RelativePath,
        UNICODE_STRING *ObjectPath){
  NTSTATUS result; 
  char v9; 
  int TokenInformation; 
  int v11; 
  __int64 v12; 
  PSID Sid2[12]; 
  PSID Sid1[12]; 
  UINT64 ReturnLength; 
  TokenInformation = 0;
  LODWORD(ReturnLength) = 0;
  memset((INT64)Sid2, 0i64);
  memset((INT64)Sid1, 0i64);
  if( !ObjectPath )
    return -1073741811;
  if( Token && AppContainerSid )
    return -1073741776;
  LODWORD(v12) = 0;
  v11 = 0;
  if( AppContainerSid )
  {
    Token = (PVOID)-4i64;
    v9 = 0;
  }
  else
  {
    v9 = 1;
    if( Token )
      goto LABEL_11;
    Token = (PVOID)-6i64;
  }
  if( !AppContainerSid )
  {
LABEL_11:
    result = NtQueryInformationToken(Token, TokenIsAppContainer, &TokenInformation, 4ui64, &ReturnLength);
    if( result < 0 )
      return result;
    if( !TokenInformation )
    {
      result = 0;
      *ObjectPath = 0i64;
      return result;
    }
  }
  if( !RelativePath || !v9 )
    return RtlpGetTokenNamedObjectPath(Token, AppContainerSid);
  result = NtQueryInformationToken(
             (PVOID)0xFFFFFFFFFFFFFFFCi64,
             TokenIsRestricted|TokenGroups,
             &v11,
             4ui64,
             &ReturnLength);
  if( result < 0 )
    return result;
  if( !v11 )
    return RtlpGetTokenNamedObjectPath(Token, AppContainerSid);
  result = NtQueryInformationToken(Token, TokenIsRestricted|TokenGroups, &v12, 4ui64, &ReturnLength);
  if( result < 0 )
    return result;
  if( !(_DWORD)v12 )
    return -1073741637;
  result = NtQueryInformationToken((PVOID)0xFFFFFFFFFFFFFFFCi64, TokenUser, Sid2, 0x58ui64, &ReturnLength);
  if( result >= 0 )
  {
    result = NtQueryInformationToken(Token, TokenUser, Sid1, 0x58ui64, &ReturnLength);
    if( result >= 0 )
    {
      if( !RtlEqualSid(Sid1[0], Sid2[0]) )
        return -1073741637;
      return RtlpGetTokenNamedObjectPath(Token, AppContainerSid);
    }
  }
  return result;
}

Referenced by:

No references.