Crash when loading a SVG image
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 22 May 2018 07:46:02 +0000 (07:46 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 22 May 2018 07:46:02 +0000 (07:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=185819

Reviewed by Brent Fulgham.

This is happening in WebLoaderStrategy::scheduleLoad() when getting the value of
FrameLoaderClient::pageID(). SVGImage uses the empty clients for the loader, and
EmptyFrameLoaderClient::pageID() returns std::nullopt. The same happens with the frameID. This changed in
r225934, when pageID() and frameID() were changed to return std::optional, EmptyFrameLoaderClient was updated to
return std::nullopt instead of 0.

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad): Use value_or(0) instead of value() to get pageID and frameID from
FrameLoaderClient.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232056 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/ChangeLog
Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp

index 2005a22..1ed3e76 100644 (file)
@@ -1,3 +1,20 @@
+2018-05-22  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        Crash when loading a SVG image
+        https://bugs.webkit.org/show_bug.cgi?id=185819
+
+        Reviewed by Brent Fulgham.
+
+        This is happening in WebLoaderStrategy::scheduleLoad() when getting the value of
+        FrameLoaderClient::pageID(). SVGImage uses the empty clients for the loader, and
+        EmptyFrameLoaderClient::pageID() returns std::nullopt. The same happens with the frameID. This changed in
+        r225934, when pageID() and frameID() were changed to return std::optional, EmptyFrameLoaderClient was updated to
+        return std::nullopt instead of 0.
+
+        * WebProcess/Network/WebLoaderStrategy.cpp:
+        (WebKit::WebLoaderStrategy::scheduleLoad): Use value_or(0) instead of value() to get pageID and frameID from
+        FrameLoaderClient.
+
 2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         Use more C++17
index 63aebcc..dd1deea 100644 (file)
@@ -156,8 +156,8 @@ void WebLoaderStrategy::scheduleLoad(ResourceLoader& resourceLoader, CachedResou
     auto& frameLoaderClient = resourceLoader.frameLoader()->client();
 
     WebResourceLoader::TrackingParameters trackingParameters;
-    trackingParameters.pageID = frameLoaderClient.pageID().value();
-    trackingParameters.frameID = frameLoaderClient.frameID().value();
+    trackingParameters.pageID = frameLoaderClient.pageID().value_or(0);
+    trackingParameters.frameID = frameLoaderClient.frameID().value_or(0);
     trackingParameters.resourceID = identifier;
     auto sessionID = frameLoaderClient.sessionID();