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

Side by Side Diff: sandbox/src/sandbox_policy_base.cc

Issue 757001: Second round of sbox changes for 64 bit port... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sandbox/src/process_thread_policy.cc ('k') | sandbox/src/sharedmem_ipc_server.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sandbox/src/sandbox_policy_base.h" 5 #include "sandbox/src/sandbox_policy_base.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "sandbox/src/filesystem_dispatcher.h" 10 #include "sandbox/src/filesystem_dispatcher.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 policy_(NULL), 64 policy_(NULL),
65 policy_maker_(NULL), 65 policy_maker_(NULL),
66 file_system_init_(false), 66 file_system_init_(false),
67 relaxed_interceptions_(true), 67 relaxed_interceptions_(true),
68 use_alternate_desktop_(false), 68 use_alternate_desktop_(false),
69 use_alternate_winstation_(false) { 69 use_alternate_winstation_(false) {
70 ::InitializeCriticalSection(&lock_); 70 ::InitializeCriticalSection(&lock_);
71 // Initialize the IPC dispatcher array. 71 // Initialize the IPC dispatcher array.
72 memset(&ipc_targets_, NULL, sizeof(ipc_targets_)); 72 memset(&ipc_targets_, NULL, sizeof(ipc_targets_));
73 Dispatcher* dispatcher = NULL; 73 Dispatcher* dispatcher = NULL;
74 dispatcher = new ThreadProcessDispatcher(this);
75 ipc_targets_[IPC_NTOPENTHREAD_TAG] = dispatcher;
76 ipc_targets_[IPC_NTOPENPROCESS_TAG] = dispatcher;
77 ipc_targets_[IPC_CREATEPROCESSW_TAG] = dispatcher;
78 ipc_targets_[IPC_NTOPENPROCESSTOKEN_TAG] = dispatcher;
79 ipc_targets_[IPC_NTOPENPROCESSTOKENEX_TAG] = dispatcher;
74 #if !defined(_WIN64) 80 #if !defined(_WIN64)
75 // Bug 27218: We don't have dispatch for some x64 syscalls. 81 // Bug 27218: We don't have dispatch for some x64 syscalls.
76 dispatcher = new FilesystemDispatcher(this); 82 dispatcher = new FilesystemDispatcher(this);
77 ipc_targets_[IPC_NTCREATEFILE_TAG] = dispatcher; 83 ipc_targets_[IPC_NTCREATEFILE_TAG] = dispatcher;
78 ipc_targets_[IPC_NTOPENFILE_TAG] = dispatcher; 84 ipc_targets_[IPC_NTOPENFILE_TAG] = dispatcher;
79 ipc_targets_[IPC_NTSETINFO_RENAME_TAG] = dispatcher; 85 ipc_targets_[IPC_NTSETINFO_RENAME_TAG] = dispatcher;
80 ipc_targets_[IPC_NTQUERYATTRIBUTESFILE_TAG] = dispatcher; 86 ipc_targets_[IPC_NTQUERYATTRIBUTESFILE_TAG] = dispatcher;
81 ipc_targets_[IPC_NTQUERYFULLATTRIBUTESFILE_TAG] = dispatcher; 87 ipc_targets_[IPC_NTQUERYFULLATTRIBUTESFILE_TAG] = dispatcher;
82 dispatcher = new ThreadProcessDispatcher(this); 88
83 ipc_targets_[IPC_NTOPENTHREAD_TAG] = dispatcher;
84 ipc_targets_[IPC_NTOPENPROCESS_TAG] = dispatcher;
85 ipc_targets_[IPC_CREATEPROCESSW_TAG] = dispatcher;
86 ipc_targets_[IPC_NTOPENPROCESSTOKEN_TAG] = dispatcher;
87 ipc_targets_[IPC_NTOPENPROCESSTOKENEX_TAG] = dispatcher;
88 dispatcher = new NamedPipeDispatcher(this); 89 dispatcher = new NamedPipeDispatcher(this);
89 ipc_targets_[IPC_CREATENAMEDPIPEW_TAG] = dispatcher; 90 ipc_targets_[IPC_CREATENAMEDPIPEW_TAG] = dispatcher;
91
90 dispatcher = new SyncDispatcher(this); 92 dispatcher = new SyncDispatcher(this);
91 ipc_targets_[IPC_CREATEEVENT_TAG] = dispatcher; 93 ipc_targets_[IPC_CREATEEVENT_TAG] = dispatcher;
92 ipc_targets_[IPC_OPENEVENT_TAG] = dispatcher; 94 ipc_targets_[IPC_OPENEVENT_TAG] = dispatcher;
95
93 dispatcher = new RegistryDispatcher(this); 96 dispatcher = new RegistryDispatcher(this);
94 ipc_targets_[IPC_NTCREATEKEY_TAG] = dispatcher; 97 ipc_targets_[IPC_NTCREATEKEY_TAG] = dispatcher;
95 ipc_targets_[IPC_NTOPENKEY_TAG] = dispatcher; 98 ipc_targets_[IPC_NTOPENKEY_TAG] = dispatcher;
96 #endif 99 #endif
97 } 100 }
98 101
99 PolicyBase::~PolicyBase() { 102 PolicyBase::~PolicyBase() {
100 TargetSet::iterator it; 103 TargetSet::iterator it;
101 for (it = targets_.begin(); it != targets_.end(); ++it) { 104 for (it = targets_.begin(); it != targets_.end(); ++it) {
102 TargetProcess* target = (*it); 105 TargetProcess* target = (*it);
103 delete target; 106 delete target;
104 } 107 }
108 delete ipc_targets_[IPC_NTOPENTHREAD_TAG];
105 #if !defined(_WIN64) 109 #if !defined(_WIN64)
106 // Bug 27218: We don't have dispatch for some x64 syscalls. 110 // Bug 27218: We don't have dispatch for some x64 syscalls.
107 delete ipc_targets_[IPC_NTCREATEFILE_TAG]; 111 delete ipc_targets_[IPC_NTCREATEFILE_TAG];
108 delete ipc_targets_[IPC_NTOPENTHREAD_TAG];
109 delete ipc_targets_[IPC_CREATENAMEDPIPEW_TAG]; 112 delete ipc_targets_[IPC_CREATENAMEDPIPEW_TAG];
110 delete ipc_targets_[IPC_CREATEEVENT_TAG]; 113 delete ipc_targets_[IPC_CREATEEVENT_TAG];
111 delete ipc_targets_[IPC_NTCREATEKEY_TAG]; 114 delete ipc_targets_[IPC_NTCREATEKEY_TAG];
112 delete policy_maker_; 115 delete policy_maker_;
113 delete policy_; 116 delete policy_;
114 #endif 117 #endif
115 ::DeleteCriticalSection(&lock_); 118 ::DeleteCriticalSection(&lock_);
116 } 119 }
117 120
118 DWORD PolicyBase::MakeJobObject(HANDLE* job) { 121 DWORD PolicyBase::MakeJobObject(HANDLE* job) {
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 return false; 446 return false;
444 447
445 if (!manager.InitializeInterceptions()) 448 if (!manager.InitializeInterceptions())
446 return false; 449 return false;
447 450
448 // Finally, setup imports on the target so the interceptions can work. 451 // Finally, setup imports on the target so the interceptions can work.
449 return SetupNtdllImports(target); 452 return SetupNtdllImports(target);
450 } 453 }
451 454
452 } // namespace sandbox 455 } // namespace sandbox
OLDNEW
« no previous file with comments | « sandbox/src/process_thread_policy.cc ('k') | sandbox/src/sharedmem_ipc_server.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698