Index: sandbox/win/src/job.cc |
diff --git a/sandbox/win/src/job.cc b/sandbox/win/src/job.cc |
deleted file mode 100644 |
index 63e66102c032e282ce73e7da467d1d9e98ac8f2b..0000000000000000000000000000000000000000 |
--- a/sandbox/win/src/job.cc |
+++ /dev/null |
@@ -1,120 +0,0 @@ |
-// Copyright (c) 2011 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 "sandbox/win/src/job.h" |
- |
-#include <stddef.h> |
-#include <utility> |
- |
-#include "base/win/windows_version.h" |
-#include "sandbox/win/src/restricted_token.h" |
- |
-namespace sandbox { |
- |
-Job::Job() : job_handle_(NULL) { |
-}; |
- |
-Job::~Job() { |
-}; |
- |
-DWORD Job::Init(JobLevel security_level, |
- const wchar_t* job_name, |
- DWORD ui_exceptions, |
- size_t memory_limit) { |
- if (job_handle_.IsValid()) |
- return ERROR_ALREADY_INITIALIZED; |
- |
- job_handle_.Set(::CreateJobObject(NULL, // No security attribute |
- job_name)); |
- if (!job_handle_.IsValid()) |
- return ::GetLastError(); |
- |
- JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli = {}; |
- JOBOBJECT_BASIC_UI_RESTRICTIONS jbur = {}; |
- |
- // Set the settings for the different security levels. Note: The higher levels |
- // inherit from the lower levels. |
- switch (security_level) { |
- case JOB_LOCKDOWN: { |
- jeli.BasicLimitInformation.LimitFlags |= |
- JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION; |
- } |
- case JOB_RESTRICTED: { |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_WRITECLIPBOARD; |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_READCLIPBOARD; |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_HANDLES; |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_GLOBALATOMS; |
- } |
- case JOB_LIMITED_USER: { |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_DISPLAYSETTINGS; |
- jeli.BasicLimitInformation.LimitFlags |= JOB_OBJECT_LIMIT_ACTIVE_PROCESS; |
- jeli.BasicLimitInformation.ActiveProcessLimit = 1; |
- } |
- case JOB_INTERACTIVE: { |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS; |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_DESKTOP; |
- jbur.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_EXITWINDOWS; |
- } |
- case JOB_UNPROTECTED: { |
- if (memory_limit) { |
- jeli.BasicLimitInformation.LimitFlags |= |
- JOB_OBJECT_LIMIT_PROCESS_MEMORY; |
- jeli.ProcessMemoryLimit = memory_limit; |
- } |
- |
- jeli.BasicLimitInformation.LimitFlags |= |
- JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; |
- break; |
- } |
- default: { |
- return ERROR_BAD_ARGUMENTS; |
- } |
- } |
- |
- if (FALSE == ::SetInformationJobObject(job_handle_.Get(), |
- JobObjectExtendedLimitInformation, |
- &jeli, |
- sizeof(jeli))) { |
- return ::GetLastError(); |
- } |
- |
- jbur.UIRestrictionsClass = jbur.UIRestrictionsClass & (~ui_exceptions); |
- if (FALSE == ::SetInformationJobObject(job_handle_.Get(), |
- JobObjectBasicUIRestrictions, |
- &jbur, |
- sizeof(jbur))) { |
- return ::GetLastError(); |
- } |
- |
- return ERROR_SUCCESS; |
-} |
- |
-DWORD Job::UserHandleGrantAccess(HANDLE handle) { |
- if (!job_handle_.IsValid()) |
- return ERROR_NO_DATA; |
- |
- if (!::UserHandleGrantAccess(handle, |
- job_handle_.Get(), |
- TRUE)) { // Access allowed. |
- return ::GetLastError(); |
- } |
- |
- return ERROR_SUCCESS; |
-} |
- |
-base::win::ScopedHandle Job::Take() { |
- return std::move(job_handle_); |
-} |
- |
-DWORD Job::AssignProcessToJob(HANDLE process_handle) { |
- if (!job_handle_.IsValid()) |
- return ERROR_NO_DATA; |
- |
- if (FALSE == ::AssignProcessToJobObject(job_handle_.Get(), process_handle)) |
- return ::GetLastError(); |
- |
- return ERROR_SUCCESS; |
-} |
- |
-} // namespace sandbox |