Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Unified Diff: sandbox/win/tests/validation_tests/commands.cc

Issue 1851213002: Remove sandbox on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix nacl compile issues Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sandbox/win/tests/validation_tests/commands.cc
diff --git a/sandbox/win/tests/validation_tests/commands.cc b/sandbox/win/tests/validation_tests/commands.cc
deleted file mode 100644
index f0c882871529ba2e98f484491e7f1fc928928953..0000000000000000000000000000000000000000
--- a/sandbox/win/tests/validation_tests/commands.cc
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright (c) 2012 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 <Aclapi.h>
-#include <windows.h>
-#include <stddef.h>
-#include <string>
-
-#include "sandbox/win/tests/validation_tests/commands.h"
-
-#include "sandbox/win/tests/common/controller.h"
-
-namespace {
-
-// Returns the HKEY corresponding to name. If there is no HKEY corresponding
-// to the name it returns NULL.
-HKEY GetHKEYFromString(const base::string16 &name) {
- if (name == L"HKLM")
- return HKEY_LOCAL_MACHINE;
- if (name == L"HKCR")
- return HKEY_CLASSES_ROOT;
- if (name == L"HKCC")
- return HKEY_CURRENT_CONFIG;
- if (name == L"HKCU")
- return HKEY_CURRENT_USER;
- if (name == L"HKU")
- return HKEY_USERS;
-
- return NULL;
-}
-
-// Modifies string to remove the leading and trailing quotes.
-void trim_quote(base::string16* string) {
- base::string16::size_type pos1 = string->find_first_not_of(L'"');
- base::string16::size_type pos2 = string->find_last_not_of(L'"');
-
- if (pos1 == base::string16::npos || pos2 == base::string16::npos)
- string->clear();
- else
- (*string) = string->substr(pos1, pos2 + 1);
-}
-
-int TestOpenFile(base::string16 path, bool for_write) {
- wchar_t path_expanded[MAX_PATH + 1] = {0};
- DWORD size = ::ExpandEnvironmentStrings(path.c_str(), path_expanded,
- MAX_PATH);
- if (!size)
- return sandbox::SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-
- HANDLE file;
- file = ::CreateFile(path_expanded,
- for_write ? GENERIC_READ | GENERIC_WRITE : GENERIC_READ,
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
- NULL, // No security attributes.
- OPEN_EXISTING,
- FILE_FLAG_BACKUP_SEMANTICS,
- NULL); // No template.
-
- if (file != INVALID_HANDLE_VALUE) {
- ::CloseHandle(file);
- return sandbox::SBOX_TEST_SUCCEEDED;
- }
- return (::GetLastError() == ERROR_ACCESS_DENIED) ?
- sandbox::SBOX_TEST_DENIED : sandbox::SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-}
-
-} // namespace
-
-namespace sandbox {
-
-SBOX_TESTS_COMMAND int ValidWindow(int argc, wchar_t **argv) {
- return (argc == 1) ?
- TestValidWindow(
- reinterpret_cast<HWND>(static_cast<ULONG_PTR>(_wtoi(argv[0])))) :
- SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-}
-
-int TestValidWindow(HWND window) {
- return ::IsWindow(window) ? SBOX_TEST_SUCCEEDED : SBOX_TEST_DENIED;
-}
-
-SBOX_TESTS_COMMAND int OpenProcessCmd(int argc, wchar_t **argv) {
- return (argc == 2) ?
- TestOpenProcess(_wtol(argv[0]), _wtol(argv[1])) :
- SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-}
-
-int TestOpenProcess(DWORD process_id, DWORD access_mask) {
- HANDLE process = ::OpenProcess(access_mask,
- FALSE, // Do not inherit handle.
- process_id);
- if (process != NULL) {
- ::CloseHandle(process);
- return SBOX_TEST_SUCCEEDED;
- }
- return (::GetLastError() == ERROR_ACCESS_DENIED) ?
- sandbox::SBOX_TEST_DENIED : sandbox::SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-}
-
-SBOX_TESTS_COMMAND int OpenThreadCmd(int argc, wchar_t **argv) {
- return (argc == 1) ?
- TestOpenThread(_wtoi(argv[0])) : SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-}
-
-int TestOpenThread(DWORD thread_id) {
- HANDLE thread = ::OpenThread(THREAD_QUERY_INFORMATION,
- FALSE, // Do not inherit handles.
- thread_id);
- if (thread != NULL) {
- ::CloseHandle(thread);
- return SBOX_TEST_SUCCEEDED;
- }
- return (::GetLastError() == ERROR_ACCESS_DENIED) ?
- sandbox::SBOX_TEST_DENIED : sandbox::SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-}
-
-SBOX_TESTS_COMMAND int OpenFileCmd(int argc, wchar_t **argv) {
- if (1 != argc)
- return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-
- base::string16 path = argv[0];
- trim_quote(&path);
-
- return TestOpenReadFile(path);
-}
-
-int TestOpenReadFile(const base::string16& path) {
- return TestOpenFile(path, false);
-}
-
-int TestOpenWriteFile(int argc, wchar_t **argv) {
- if (argc != 1)
- return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-
- base::string16 path = argv[0];
- trim_quote(&path);
- return TestOpenWriteFile(path);
-}
-
-int TestOpenWriteFile(const base::string16& path) {
- return TestOpenFile(path, true);
-}
-
-SBOX_TESTS_COMMAND int OpenKey(int argc, wchar_t **argv) {
- if (argc != 1 && argc != 2)
- return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-
- // Get the hive.
- HKEY base_key = GetHKEYFromString(argv[0]);
-
- // Get the subkey.
- base::string16 subkey;
- if (argc == 2) {
- subkey = argv[1];
- trim_quote(&subkey);
- }
-
- return TestOpenKey(base_key, subkey);
-}
-
-int TestOpenKey(HKEY base_key, base::string16 subkey) {
- HKEY key;
- LONG err_code = ::RegOpenKeyEx(base_key,
- subkey.c_str(),
- 0, // Reserved, must be 0.
- MAXIMUM_ALLOWED,
- &key);
- if (err_code == ERROR_SUCCESS) {
- ::RegCloseKey(key);
- return SBOX_TEST_SUCCEEDED;
- }
- return (err_code == ERROR_INVALID_HANDLE || err_code == ERROR_ACCESS_DENIED) ?
- SBOX_TEST_DENIED : SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-}
-
-// Returns true if the current's thread desktop is the interactive desktop.
-// In Vista there is a more direct test but for XP and w2k we need to check
-// the object name.
-bool IsInteractiveDesktop(bool* is_interactive) {
- HDESK current_desk = ::GetThreadDesktop(::GetCurrentThreadId());
- if (current_desk == NULL)
- return false;
- wchar_t current_desk_name[256] = {0};
- if (!::GetUserObjectInformationW(current_desk, UOI_NAME, current_desk_name,
- sizeof(current_desk_name), NULL))
- return false;
- *is_interactive = (0 == _wcsicmp(L"default", current_desk_name));
- return true;
-}
-
-SBOX_TESTS_COMMAND int OpenInteractiveDesktop(int, wchar_t **) {
- return TestOpenInputDesktop();
-}
-
-int TestOpenInputDesktop() {
- bool is_interactive = false;
- if (IsInteractiveDesktop(&is_interactive) && is_interactive)
- return SBOX_TEST_SUCCEEDED;
- HDESK desk = ::OpenInputDesktop(0, FALSE, DESKTOP_CREATEWINDOW);
- if (desk) {
- ::CloseDesktop(desk);
- return SBOX_TEST_SUCCEEDED;
- }
- return SBOX_TEST_DENIED;
-}
-
-SBOX_TESTS_COMMAND int SwitchToSboxDesktop(int, wchar_t **) {
- return TestSwitchDesktop();
-}
-
-int TestSwitchDesktop() {
- HDESK desktop = ::GetThreadDesktop(::GetCurrentThreadId());
- if (desktop == NULL)
- return SBOX_TEST_FAILED;
- return ::SwitchDesktop(desktop) ? SBOX_TEST_SUCCEEDED : SBOX_TEST_DENIED;
-}
-
-SBOX_TESTS_COMMAND int OpenAlternateDesktop(int, wchar_t **argv) {
- return TestOpenAlternateDesktop(argv[0]);
-}
-
-int TestOpenAlternateDesktop(wchar_t *desktop_name) {
- // Test for WRITE_DAC permission on the handle.
- HDESK desktop = ::GetThreadDesktop(::GetCurrentThreadId());
- if (desktop) {
- HANDLE test_handle;
- if (::DuplicateHandle(::GetCurrentProcess(), desktop,
- ::GetCurrentProcess(), &test_handle,
- WRITE_DAC, FALSE, 0)) {
- DWORD result = ::SetSecurityInfo(test_handle, SE_WINDOW_OBJECT,
- DACL_SECURITY_INFORMATION, NULL, NULL,
- NULL, NULL);
- ::CloseHandle(test_handle);
- if (result == ERROR_SUCCESS)
- return SBOX_TEST_SUCCEEDED;
- } else if (::GetLastError() != ERROR_ACCESS_DENIED) {
- return SBOX_TEST_FAILED;
- }
- }
-
- // Open by name with WRITE_DAC.
- desktop = ::OpenDesktop(desktop_name, 0, FALSE, WRITE_DAC);
- if (!desktop && ::GetLastError() == ERROR_ACCESS_DENIED)
- return SBOX_TEST_DENIED;
- ::CloseDesktop(desktop);
- return SBOX_TEST_SUCCEEDED;
-}
-
-BOOL CALLBACK DesktopTestEnumProc(LPTSTR desktop_name, LPARAM result) {
- return TRUE;
-}
-
-SBOX_TESTS_COMMAND int EnumAlternateWinsta(int, wchar_t **) {
- return TestEnumAlternateWinsta();
-}
-
-int TestEnumAlternateWinsta() {
- // Try to enumerate the destops on the alternate windowstation.
- return ::EnumDesktopsW(NULL, DesktopTestEnumProc, 0) ?
- SBOX_TEST_SUCCEEDED : SBOX_TEST_DENIED;
-}
-
-SBOX_TESTS_COMMAND int SleepCmd(int argc, wchar_t **argv) {
- if (argc != 1)
- return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-
- ::Sleep(_wtoi(argv[0]));
- return SBOX_TEST_SUCCEEDED;
-}
-
-SBOX_TESTS_COMMAND int AllocateCmd(int argc, wchar_t **argv) {
- if (argc != 1)
- return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
-
- size_t mem_size = static_cast<size_t>(_wtoll(argv[0]));
- void* memory = ::VirtualAlloc(NULL, mem_size, MEM_COMMIT | MEM_RESERVE,
- PAGE_READWRITE);
- if (!memory) {
- // We need to give the broker a chance to kill our process on failure.
- ::Sleep(5000);
- return SBOX_TEST_DENIED;
- }
-
- return ::VirtualFree(memory, 0, MEM_RELEASE) ?
- SBOX_TEST_SUCCEEDED : SBOX_TEST_FAILED;
-}
-
-
-} // namespace sandbox
« no previous file with comments | « sandbox/win/tests/validation_tests/commands.h ('k') | sandbox/win/tests/validation_tests/sbox_validation_tests.vcproj » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698