Title: [271263] trunk/Source/WebKit
- Revision
- 271263
- Author
- [email protected]
- Date
- 2021-01-07 15:09:45 -0800 (Thu, 07 Jan 2021)
Log Message
Assertion failure in WebPageProxy::stopURLSchemeTask,
https://bugs.webkit.org/show_bug.cgi?id=220401
Patch by Alex Christensen <[email protected]> on 2021-01-07
Reviewed by Ryosuke Niwa.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::startURLSchemeTaskShared):
(WebKit::WebPageProxy::stopURLSchemeTask):
(WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
* UIProcess/WebURLSchemeHandler.cpp:
(WebKit::WebURLSchemeHandler::processForTaskIdentifier const):
(WebKit::WebURLSchemeHandler::stopTask):
(WebKit::WebURLSchemeHandler::removeTaskFromPageMap):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (271262 => 271263)
--- trunk/Source/WebKit/ChangeLog 2021-01-07 23:09:29 UTC (rev 271262)
+++ trunk/Source/WebKit/ChangeLog 2021-01-07 23:09:45 UTC (rev 271263)
@@ -1,3 +1,19 @@
+2021-01-07 Alex Christensen <[email protected]>
+
+ Assertion failure in WebPageProxy::stopURLSchemeTask,
+ https://bugs.webkit.org/show_bug.cgi?id=220401
+
+ Reviewed by Ryosuke Niwa.
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::startURLSchemeTaskShared):
+ (WebKit::WebPageProxy::stopURLSchemeTask):
+ (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
+ * UIProcess/WebURLSchemeHandler.cpp:
+ (WebKit::WebURLSchemeHandler::processForTaskIdentifier const):
+ (WebKit::WebURLSchemeHandler::stopTask):
+ (WebKit::WebURLSchemeHandler::removeTaskFromPageMap):
+
2021-01-07 Andy Estes <[email protected]>
[Mac] Prepend "Media" to FormatReader, SampleCursor, and TrackReader class names
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (271262 => 271263)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-01-07 23:09:29 UTC (rev 271262)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-01-07 23:09:45 UTC (rev 271263)
@@ -9544,6 +9544,7 @@
void WebPageProxy::startURLSchemeTaskShared(Ref<WebProcessProxy>&& process, PageIdentifier webPageID, URLSchemeTaskParameters&& parameters)
{
+ MESSAGE_CHECK(m_process, decltype(m_urlSchemeHandlersByIdentifier)::isValidKey(parameters.handlerIdentifier));
auto iterator = m_urlSchemeHandlersByIdentifier.find(parameters.handlerIdentifier);
MESSAGE_CHECK(process, iterator != m_urlSchemeHandlersByIdentifier.end());
@@ -9552,6 +9553,7 @@
void WebPageProxy::stopURLSchemeTask(uint64_t handlerIdentifier, uint64_t taskIdentifier)
{
+ MESSAGE_CHECK(m_process, decltype(m_urlSchemeHandlersByIdentifier)::isValidKey(handlerIdentifier));
auto iterator = m_urlSchemeHandlersByIdentifier.find(handlerIdentifier);
MESSAGE_CHECK(m_process, iterator != m_urlSchemeHandlersByIdentifier.end());
@@ -9560,6 +9562,7 @@
void WebPageProxy::loadSynchronousURLSchemeTask(URLSchemeTaskParameters&& parameters, Messages::WebPageProxy::LoadSynchronousURLSchemeTask::DelayedReply&& reply)
{
+ MESSAGE_CHECK(m_process, decltype(m_urlSchemeHandlersByIdentifier)::isValidKey(parameters.handlerIdentifier));
auto iterator = m_urlSchemeHandlersByIdentifier.find(parameters.handlerIdentifier);
MESSAGE_CHECK(m_process, iterator != m_urlSchemeHandlersByIdentifier.end());
Modified: trunk/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp (271262 => 271263)
--- trunk/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp 2021-01-07 23:09:29 UTC (rev 271262)
+++ trunk/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp 2021-01-07 23:09:45 UTC (rev 271263)
@@ -64,6 +64,8 @@
WebProcessProxy* WebURLSchemeHandler::processForTaskIdentifier(uint64_t taskIdentifier) const
{
+ if (!decltype(m_tasks)::isValidKey(taskIdentifier))
+ return nullptr;
auto iterator = m_tasks.find(taskIdentifier);
if (iterator == m_tasks.end())
return nullptr;
@@ -91,6 +93,8 @@
void WebURLSchemeHandler::stopTask(WebPageProxy& page, uint64_t taskIdentifier)
{
+ if (!decltype(m_tasks)::isValidKey(taskIdentifier))
+ return;
auto iterator = m_tasks.find(taskIdentifier);
if (iterator == m_tasks.end())
return;
@@ -116,6 +120,8 @@
auto iterator = m_tasksByPageIdentifier.find(pageID);
ASSERT(iterator != m_tasksByPageIdentifier.end());
ASSERT(iterator->value.contains(taskID));
+ if (!decltype(iterator->value)::isValidValue(taskID))
+ return;
iterator->value.remove(taskID);
if (iterator->value.isEmpty())
m_tasksByPageIdentifier.remove(iterator);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes