summaryrefslogtreecommitdiffstats
path: root/sandbox/src/target_process.h
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/src/target_process.h')
-rw-r--r--sandbox/src/target_process.h37
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,