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

Unified Diff: content/common/sandbox_win.cc

Issue 1415483008: Get rid of SandboxedProcessLauncherDelegate::PreSandbox. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove curly braces Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/utility_process_host_impl.cc ('k') | content/public/browser/content_browser_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/sandbox_win.cc
diff --git a/content/common/sandbox_win.cc b/content/common/sandbox_win.cc
index 88f703cef3388f99df46ec9f4a951c33c4793fc1..4e441bc7a95ea5812d2bcfe7d7ed54102dedde50 100644
--- a/content/common/sandbox_win.cc
+++ b/content/common/sandbox_win.cc
@@ -661,6 +661,7 @@ bool InitTargetServices(sandbox::TargetServices* target_services) {
base::Process StartSandboxedProcess(
SandboxedProcessLauncherDelegate* delegate,
base::CommandLine* cmd_line) {
+ DCHECK(delegate);
const base::CommandLine& browser_command_line =
*base::CommandLine::ForCurrentProcess();
std::string type_str = cmd_line->GetSwitchValueASCII(switches::kProcessType);
@@ -680,7 +681,7 @@ base::Process StartSandboxedProcess(
// to create separate pretetch settings for browser, renderer etc.
cmd_line->AppendArg(base::StringPrintf("/prefetch:%d", base::Hash(type_str)));
- if ((delegate && !delegate->ShouldSandbox()) ||
+ if ((!delegate->ShouldSandbox()) ||
browser_command_line.HasSwitch(switches::kNoSandbox) ||
cmd_line->HasSwitch(switches::kNoSandbox)) {
base::Process process =
@@ -717,13 +718,10 @@ base::Process StartSandboxedProcess(
SetJobLevel(*cmd_line, sandbox::JOB_LOCKDOWN, 0, policy);
- bool disable_default_policy = false;
- base::FilePath exposed_dir;
- if (delegate)
- delegate->PreSandbox(&disable_default_policy, &exposed_dir);
-
- if (!disable_default_policy && !AddPolicyForSandboxedProcess(policy))
- return base::Process();
+ if (!delegate->DisableDefaultPolicy()) {
+ if (!AddPolicyForSandboxedProcess(policy))
+ return base::Process();
+ }
#if !defined(NACL_WIN64)
if (type_str == switches::kRendererProcess ||
@@ -761,22 +759,6 @@ base::Process StartSandboxedProcess(
cmd_line->AppendSwitchASCII("ignored", " --type=renderer ");
}
- sandbox::ResultCode result;
- if (!exposed_dir.empty()) {
- result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES,
- sandbox::TargetPolicy::FILES_ALLOW_ANY,
- exposed_dir.value().c_str());
- if (result != sandbox::SBOX_ALL_OK)
- return base::Process();
-
- base::FilePath exposed_files = exposed_dir.AppendASCII("*");
- result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES,
- sandbox::TargetPolicy::FILES_ALLOW_ANY,
- exposed_files.value().c_str());
- if (result != sandbox::SBOX_ALL_OK)
- return base::Process();
- }
-
if (!AddGenericPolicy(policy)) {
NOTREACHED();
return base::Process();
@@ -800,17 +782,13 @@ base::Process StartSandboxedProcess(
policy->SetStderrHandle(GetStdHandle(STD_ERROR_HANDLE));
#endif
- if (delegate) {
- bool success = true;
- delegate->PreSpawnTarget(policy, &success);
- if (!success)
- return base::Process();
- }
+ if (!delegate->PreSpawnTarget(policy))
+ return base::Process();
TRACE_EVENT_BEGIN0("startup", "StartProcessWithAccess::LAUNCHPROCESS");
PROCESS_INFORMATION temp_process_info = {};
- result = g_broker_services->SpawnTarget(
+ sandbox::ResultCode result = g_broker_services->SpawnTarget(
cmd_line->GetProgram().value().c_str(),
cmd_line->GetCommandLineString().c_str(), policy, &temp_process_info);
DWORD last_error = ::GetLastError();
@@ -833,13 +811,10 @@ base::Process StartSandboxedProcess(
} else
DLOG(ERROR) << "Failed to launch process. Error: " << result;
- policy->Release();
return base::Process();
}
- policy->Release();
- if (delegate)
- delegate->PostSpawnTarget(target.process_handle());
+ delegate->PostSpawnTarget(target.process_handle());
CHECK(ResumeThread(target.thread_handle()) != -1);
return base::Process(target.TakeProcessHandle());
@@ -855,7 +830,6 @@ bool BrokerDuplicateHandle(HANDLE source_handle,
return !!::DuplicateHandle(::GetCurrentProcess(), source_handle,
::GetCurrentProcess(), target_handle,
desired_access, FALSE, options);
-
}
// Try the broker next
« no previous file with comments | « content/browser/utility_process_host_impl.cc ('k') | content/public/browser/content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698