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

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: Missed one clang error. 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
Index: content/common/sandbox_win.cc
diff --git a/content/common/sandbox_win.cc b/content/common/sandbox_win.cc
index 88f703cef3388f99df46ec9f4a951c33c4793fc1..d7aa02125f88626f115727f2950d50085d59bef2 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,11 @@ 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 +760,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 +783,14 @@ 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 +813,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 +832,6 @@ bool BrokerDuplicateHandle(HANDLE source_handle,
return !!::DuplicateHandle(::GetCurrentProcess(), source_handle,
::GetCurrentProcess(), target_handle,
desired_access, FALSE, options);
-
}
// Try the broker next

Powered by Google App Engine
This is Rietveld 408576698