Title: [164031] trunk/Source/WebKit2
Revision
164031
Author
[email protected]
Date
2014-02-13 09:30:18 -0800 (Thu, 13 Feb 2014)

Log Message

Disable XPC for plug-ins that need executable heap
https://bugs.webkit.org/show_bug.cgi?id=128744
<rdar://problem/15962958>

Reviewed by Dan Bernstein.

When switching to XPC for plug-ins, we accidentally broke the "feature"
where plug-ins can ask for the heap to be executable.

This breaks Silverlight, so just disable XPC for any plug-ins that need this.
<rdar://problem/16059483> tracks fixing this in the XPC service.

* UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
(WebKit::PluginProcessProxy::pluginNeedsExecutableHeap):
Only return true for 32-bit plug-ins, since we don't know any 64-bit plug-ins
that require this feature.

(WebKit::PluginProcessProxy::platformGetLaunchOptions):
Set launchOptions.useXPC to false if launchOptions.executableHeap is true.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (164030 => 164031)


--- trunk/Source/WebKit2/ChangeLog	2014-02-13 17:24:32 UTC (rev 164030)
+++ trunk/Source/WebKit2/ChangeLog	2014-02-13 17:30:18 UTC (rev 164031)
@@ -1,3 +1,25 @@
+2014-02-13  Anders Carlsson  <[email protected]>
+
+        Disable XPC for plug-ins that need executable heap
+        https://bugs.webkit.org/show_bug.cgi?id=128744
+        <rdar://problem/15962958>
+
+        Reviewed by Dan Bernstein.
+
+        When switching to XPC for plug-ins, we accidentally broke the "feature"
+        where plug-ins can ask for the heap to be executable. 
+        
+        This breaks Silverlight, so just disable XPC for any plug-ins that need this.
+        <rdar://problem/16059483> tracks fixing this in the XPC service.
+
+        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
+        (WebKit::PluginProcessProxy::pluginNeedsExecutableHeap):
+        Only return true for 32-bit plug-ins, since we don't know any 64-bit plug-ins
+        that require this feature.
+
+        (WebKit::PluginProcessProxy::platformGetLaunchOptions):
+        Set launchOptions.useXPC to false if launchOptions.executableHeap is true.
+
 2014-02-12  Antti Koivisto  <[email protected]>
 
         Return immediately from DestroyPlugin IPC call

Modified: trunk/Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm (164030 => 164031)


--- trunk/Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm	2014-02-13 17:24:32 UTC (rev 164030)
+++ trunk/Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm	2014-02-13 17:30:18 UTC (rev 164031)
@@ -67,8 +67,12 @@
     
     if (pluginInfo.bundleIdentifier == "com.apple.QuickTime Plugin.plugin")
         return false;
-    
-    return true;
+
+    // We only allow 32-bit plug-ins to have the heap marked executable.
+    if (pluginInfo.pluginArchitecture == CPU_TYPE_X86)
+        return true;
+
+    return false;
 }
 
 bool PluginProcessProxy::createPropertyListFile(const PluginModuleInfo& plugin)
@@ -143,7 +147,8 @@
     if (pluginProcessAttributes.sandboxPolicy == PluginProcessSandboxPolicyUnsandboxed)
         launchOptions.extraInitializationData.add("disable-sandbox", "1");
 
-    launchOptions.useXPC = shouldUseXPC();
+    // FIXME: We should still use XPC for plug-ins that want the heap to be executable, see <rdar://problem/16059483>.
+    launchOptions.useXPC = shouldUseXPC() && !launchOptions.executableHeap;
 }
 
 void PluginProcessProxy::platformInitializePluginProcess(PluginProcessCreationParameters& parameters)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to