summaryrefslogtreecommitdiffstats
path: root/content/browser/plugin_process_host.cc
diff options
context:
space:
mode:
authoraberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-13 11:35:15 +0000
committeraberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-13 11:35:15 +0000
commit121e6138b0b543c38ec66cf0033af96dc75b49a0 (patch)
treed0a17305b9fb96bf52cef7b87feae4737cc02e97 /content/browser/plugin_process_host.cc
parent33fcc33ec9ef57d98a20911a6cd6f64f91a5d375 (diff)
downloadchromium_src-121e6138b0b543c38ec66cf0033af96dc75b49a0.zip
chromium_src-121e6138b0b543c38ec66cf0033af96dc75b49a0.tar.gz
chromium_src-121e6138b0b543c38ec66cf0033af96dc75b49a0.tar.bz2
Refactor configuration of sandboxes - first steps
See https://docs.google.com/document/d/1H-hCsIcMsAEP0fWHimbuiNA-Hc9eXEmR94eb-2RQAhA/edit?usp=sharing for background. This moves all process type dependent decisions on how to create Linux processes (not how to sandbox them once created, not Android) into the launch delegates and makes the arguments to the ChildProcessLauncher constructor and BrowserChildProcessHostImpl::Launch OS independent. BUG=none Review URL: https://codereview.chromium.org/177863002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256802 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/plugin_process_host.cc')
-rw-r--r--content/browser/plugin_process_host.cc35
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