Title: [256146] releases/WebKitGTK/webkit-2.28/Source/WebKit
Revision
256146
Author
carlo...@webkit.org
Date
2020-02-10 05:25:20 -0800 (Mon, 10 Feb 2020)

Log Message

Merge r256084 - [IPC Hardening] Protect against bad parameters in WebProcessProxy::getPluginProcessConnection()
https://bugs.webkit.org/show_bug.cgi?id=207416
<rdar://problem/58617244>

Reviewed by David Kilzer.

* UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::getPluginProcessConnection):
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getPluginProcessConnection):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog (256145 => 256146)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog	2020-02-10 13:25:16 UTC (rev 256145)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog	2020-02-10 13:25:20 UTC (rev 256146)
@@ -1,3 +1,17 @@
+2020-02-07  Chris Dumez  <cdu...@apple.com>
+
+        [IPC Hardening] Protect against bad parameters in WebProcessProxy::getPluginProcessConnection()
+        https://bugs.webkit.org/show_bug.cgi?id=207416
+        <rdar://problem/58617244>
+
+        Reviewed by David Kilzer.
+
+        * UIProcess/Plugins/PluginProcessManager.cpp:
+        (WebKit::PluginProcessManager::getPluginProcessConnection):
+        * UIProcess/Plugins/PluginProcessManager.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::getPluginProcessConnection):
+
 2020-02-07  Alex Christensen  <achristen...@webkit.org>
 
         Harden HashTable IPC decoders

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Plugins/PluginProcessManager.cpp (256145 => 256146)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Plugins/PluginProcessManager.cpp	2020-02-10 13:25:16 UTC (rev 256145)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Plugins/PluginProcessManager.cpp	2020-02-10 13:25:20 UTC (rev 256146)
@@ -82,12 +82,17 @@
     return token;
 }
 
-void PluginProcessManager::getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&& reply)
+bool PluginProcessManager::getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&& reply)
 {
     ASSERT(pluginProcessToken);
 
-    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(pluginProcessToken);
+    auto* pluginProcess = getOrCreatePluginProcess(pluginProcessToken);
+    ASSERT(pluginProcess);
+    if (!pluginProcess)
+        return false;
+
     pluginProcess->getPluginProcessConnection(WTFMove(reply));
+    return true;
 }
 
 void PluginProcessManager::removePluginProcessProxy(PluginProcessProxy* pluginProcessProxy)

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Plugins/PluginProcessManager.h (256145 => 256146)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Plugins/PluginProcessManager.h	2020-02-10 13:25:16 UTC (rev 256145)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Plugins/PluginProcessManager.h	2020-02-10 13:25:20 UTC (rev 256146)
@@ -57,7 +57,7 @@
 
     uint64_t pluginProcessToken(const PluginModuleInfo&, PluginProcessType, PluginProcessSandboxPolicy);
 
-    void getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnectionDelayedReply&&);
+    bool getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnectionDelayedReply&&);
     void removePluginProcessProxy(PluginProcessProxy*);
 
     void fetchWebsiteData(const PluginModuleInfo&, OptionSet<WebsiteDataFetchOption>, WTF::Function<void (Vector<String>)>&& completionHandler);

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.cpp (256145 => 256146)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.cpp	2020-02-10 13:25:16 UTC (rev 256145)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.cpp	2020-02-10 13:25:20 UTC (rev 256146)
@@ -688,7 +688,9 @@
 #if ENABLE(NETSCAPE_PLUGIN_API)
 void WebProcessProxy::getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&& reply)
 {
-    PluginProcessManager::singleton().getPluginProcessConnection(pluginProcessToken, WTFMove(reply));
+    MESSAGE_CHECK(HashSet<uint64_t>::isValidValue(pluginProcessToken));
+    bool success = PluginProcessManager::singleton().getPluginProcessConnection(pluginProcessToken, WTFMove(reply));
+    MESSAGE_CHECK(success);
 }
 #endif
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to