Chromium Code Reviews| Index: content/common/sandbox_policy.cc |
| =================================================================== |
| --- content/common/sandbox_policy.cc (revision 98433) |
| +++ content/common/sandbox_policy.cc (working copy) |
| @@ -287,16 +287,25 @@ |
| // TODO(cpu): Lock down the sandbox more if possible. |
| // TODO(apatrick): Use D3D9Ex to render windowless. |
| bool AddPolicyForGPU(CommandLine* cmd_line, sandbox::TargetPolicy* policy) { |
| - policy->SetJobLevel(sandbox::JOB_UNPROTECTED, 0); |
| - |
| if (base::win::GetVersion() > base::win::VERSION_XP) { |
| policy->SetTokenLevel(sandbox::USER_RESTRICTED_SAME_ACCESS, |
| sandbox::USER_LIMITED); |
| if (cmd_line->GetSwitchValueASCII(switches::kUseGL) == |
| - gfx::kGLImplementationDesktopName) |
| + gfx::kGLImplementationDesktopName) { |
| + policy->SetJobLevel(sandbox::JOB_UNPROTECTED, 0); |
| + policy->SetIntegrityLevel(sandbox::INTEGRITY_LEVEL_LOW); |
| + } else { |
| + // UI restrictions break when we access Windows from outside our job. |
| + // However, we don't want a proxy window in this process because it can |
| + // introduce deadlocks. So, the only job restriction we pick up here is |
|
brettw
2011/08/27 23:06:47
It might be nice to mention here quickly how such
jschuh
2011/08/29 16:13:58
Done.
|
| + // to prevent child processes. |
| + policy->SetJobLevel(sandbox::JOB_LIMITED_USER, |
| + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS | |
| + JOB_OBJECT_UILIMIT_DESKTOP | |
| + JOB_OBJECT_UILIMIT_EXITWINDOWS | |
| + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS); |
| policy->SetDelayedIntegrityLevel(sandbox::INTEGRITY_LEVEL_LOW); |
| - else |
| - policy->SetIntegrityLevel(sandbox::INTEGRITY_LEVEL_LOW); |
| + } |
| } else { |
| policy->SetTokenLevel(sandbox::USER_UNPROTECTED, |
| sandbox::USER_LIMITED); |