diff options
Diffstat (limited to 'content/browser/plugin_process_host.cc')
-rw-r--r-- | content/browser/plugin_process_host.cc | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/content/browser/plugin_process_host.cc b/content/browser/plugin_process_host.cc index 21d7fd4..8aa69dd 100644 --- a/content/browser/plugin_process_host.cc +++ b/content/browser/plugin_process_host.cc @@ -36,6 +36,7 @@ #include "content/public/browser/resource_context.h" #include "content/public/common/content_switches.h" #include "content/public/common/process_type.h" +#include "content/public/common/sandboxed_process_launcher_delegate.h" #include "ipc/ipc_switches.h" #include "net/url_request/url_request_context_getter.h" #include "ui/base/ui_base_switches.h" @@ -55,7 +56,6 @@ #if defined(OS_WIN) #include "base/win/windows_version.h" #include "content/common/plugin_constants_win.h" -#include "content/public/common/sandboxed_process_launcher_delegate.h" #include "ui/gfx/switches.h" #endif @@ -77,24 +77,39 @@ void PluginProcessHost::OnPluginWindowDestroyed(HWND window, HWND parent) { void PluginProcessHost::AddWindow(HWND window) { plugin_parent_windows_set_.insert(window); } +#endif // defined(OS_WIN) // NOTE: changes to this class need to be reviewed by the security team. class PluginSandboxedProcessLauncherDelegate : public SandboxedProcessLauncherDelegate { public: - PluginSandboxedProcessLauncherDelegate() {} + explicit PluginSandboxedProcessLauncherDelegate(ChildProcessHost* host) +#if defined(OS_POSIX) + : ipc_fd_(host->TakeClientFileDescriptor()) +#endif // OS_POSIX + {} + virtual ~PluginSandboxedProcessLauncherDelegate() {} - virtual void ShouldSandbox(bool* in_sandbox) OVERRIDE { - *in_sandbox = false; +#if defined(OS_WIN) + virtual bool ShouldSandbox() OVERRIDE { + return false; } +#elif defined(OS_POSIX) + virtual int GetIpcFd() OVERRIDE { + return ipc_fd_; + } +#endif // OS_WIN + private: +#if defined(OS_POSIX) + int ipc_fd_; +#endif // OS_POSIX + DISALLOW_COPY_AND_ASSIGN(PluginSandboxedProcessLauncherDelegate); }; -#endif // defined(OS_WIN) - #if defined(TOOLKIT_GTK) void PluginProcessHost::OnMapNativeViewId(gfx::NativeViewId id, gfx::PluginWindowHandle* output) { @@ -246,13 +261,7 @@ bool PluginProcessHost::Init(const WebPluginInfo& info) { #endif process_->Launch( -#if defined(OS_WIN) - new PluginSandboxedProcessLauncherDelegate, - false, -#elif defined(OS_POSIX) - false, - env, -#endif + new PluginSandboxedProcessLauncherDelegate(process_->GetHost()), cmd_line); // The plugin needs to be shutdown gracefully, i.e. NP_Shutdown needs to be |