// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <windows.h>

#include "sandbox/win/tests/common/controller.h"

// Function definition from hijack dll.
bool GetPathOnDisk(wchar_t* buffer);

// This shim implicitly links in the GetPathOnDisk function from the test
// hijack DLL.  When this DLL is loaded, the loader resolves the
// import using standard search path.  (The mitigation being tested affects the
// standard search path.)  This test then calls the exported function to
// determine which DLL on disk was loaded.
//
// Arg1: "true" or "false", if the DLL path should be in system32.
int CheckHijackResult(bool expect_system) {
  wchar_t dll_path[MAX_PATH + 1] = {};

  // This should always succeed.
  if (!GetPathOnDisk(dll_path))
    return sandbox::SBOX_TEST_NOT_FOUND;

  // Make sure the path is all one case.
  for (size_t i = 0; dll_path[i]; i++)
    dll_path[i] = ::towlower(dll_path[i]);

  if (::wcsstr(dll_path, L"system32") == nullptr) {
    // Not in system32.
    return (expect_system) ? sandbox::SBOX_TEST_FAILED
                           : sandbox::SBOX_TEST_SUCCEEDED;
  }

  return (!expect_system) ? sandbox::SBOX_TEST_FAILED
                          : sandbox::SBOX_TEST_SUCCEEDED;
}

BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) {
  return TRUE;
}
