Index: chrome/common/sandbox_init_wrapper_win.cc |
=================================================================== |
--- chrome/common/sandbox_init_wrapper_win.cc (revision 74231) |
+++ chrome/common/sandbox_init_wrapper_win.cc (working copy) |
@@ -1,10 +1,12 @@ |
-// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// 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 "chrome/common/sandbox_init_wrapper.h" |
#include "base/command_line.h" |
+#include "base/logging.h" |
+ |
#include "chrome/common/chrome_switches.h" |
void SandboxInitWrapper::SetServices(sandbox::SandboxInterfaceInfo* info) { |
@@ -12,6 +14,9 @@ |
broker_services_ = info->broker_services; |
target_services_ = info->target_services; |
} |
+ // Both interface pointers cannot be non-zero. A process can either |
+ // be a target or a broker but not both. |
+ DCHECK(!(target_services_ && broker_services_)); |
} |
bool SandboxInitWrapper::InitializeSandbox(const CommandLine& command_line, |
@@ -22,12 +27,16 @@ |
(process_type == switches::kExtensionProcess) || |
(process_type == switches::kWorkerProcess) || |
(process_type == switches::kNaClLoaderProcess) || |
- (process_type == switches::kUtilityProcess) || |
- (process_type == switches::kPluginProcess && |
- command_line.HasSwitch(switches::kSafePlugins))) { |
+ (process_type == switches::kUtilityProcess)) { |
+ // The above five process types must be sandboxed unless --no-sandbox |
+ // is present in the command line. |
if (!target_services_) |
return false; |
- target_services_->Init(); |
+ } else { |
+ // Other process types might or might not be sandboxed. |
+ // TODO(cpu): clean this mess. |
+ if (!target_services_) |
+ return true; |
} |
- return true; |
+ return (sandbox::SBOX_ALL_OK == target_services_->Init()); |
} |