diff options
Diffstat (limited to 'sandbox/src/target_process.h')
-rw-r--r-- | sandbox/src/target_process.h | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/sandbox/src/target_process.h b/sandbox/src/target_process.h index f20935d..5afe654 100644 --- a/sandbox/src/target_process.h +++ b/sandbox/src/target_process.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// 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. @@ -8,6 +8,9 @@ #include <windows.h> #include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" +#include "base/win/scoped_handle.h" +#include "base/win/scoped_process_information.h" #include "sandbox/src/crosscall_server.h" #include "sandbox/src/sandbox_types.h" @@ -33,8 +36,10 @@ class TargetProcess { void Release() {} // Creates the new target process. The process is created suspended. - DWORD Create(const wchar_t* exe_path, const wchar_t* command_line, - const wchar_t* desktop, PROCESS_INFORMATION* target_info); + DWORD Create(const wchar_t* exe_path, + const wchar_t* command_line, + const wchar_t* desktop, + base::win::ScopedProcessInformation* target_info); // Destroys the target process. void Terminate(); @@ -46,7 +51,7 @@ class TargetProcess { // Returns the handle to the target process. HANDLE Process() const { - return sandbox_process_; + return sandbox_process_info_.process_handle(); } // Returns the handle to the job object that the target process belongs to. @@ -62,47 +67,43 @@ class TargetProcess { // Returns the name of the executable. const wchar_t* Name() const { - return exe_name_; + return exe_name_.get(); } // Returns the process id. DWORD ProcessId() const { - return sandbox_process_id_; + return sandbox_process_info_.process_id(); } // Returns the handle to the main thread. HANDLE MainThread() const { - return sandbox_thread_; + return sandbox_process_info_.thread_handle(); } // Transfers a 32-bit variable between the broker and the target. ResultCode TransferVariable(char* name, void* address, size_t size); private: - // The handle to the target process. - HANDLE sandbox_process_; - // The handle to the main thread. - HANDLE sandbox_thread_; - // The process id of the target process. - DWORD sandbox_process_id_; + // Details of the target process. + base::win::ScopedProcessInformation sandbox_process_info_; // The token associated with the process. It provides the core of the // sbox security. - HANDLE lockdown_token_; + base::win::ScopedHandle lockdown_token_; // The token given to the initial thread so that the target process can // start. It has more powers than the lockdown_token. - HANDLE initial_token_; + base::win::ScopedHandle initial_token_; // Kernel handle to the shared memory used by the IPC server. - HANDLE shared_section_; + base::win::ScopedHandle shared_section_; // Job object containing the target process. HANDLE job_; // Reference to the IPC subsystem. - SharedMemIPCServer* ipc_server_; + scoped_ptr<SharedMemIPCServer> ipc_server_; // Provides the threads used by the IPC. This class does not own this pointer. ThreadProvider* thread_pool_; // Base address of the main executable void* base_address_; // Full name of the target executable. - wchar_t* exe_name_; + scoped_ptr_malloc<wchar_t> exe_name_; // Function used for testing. friend TargetProcess* MakeTestTargetProcess(HANDLE process, |