Title: [214506] trunk
Revision
214506
Author
[email protected]
Date
2017-03-28 16:50:55 -0700 (Tue, 28 Mar 2017)

Log Message

[iOS] Crash in -[WebPreviewLoader failed] when running http/tests/multipart/policy-ignore-crash.php
https://bugs.webkit.org/show_bug.cgi?id=170197
<rdar://problem/30314067>

Reviewed by Brady Eidson.

Source/WebCore:

If QuickLook conversion fails, we call ResourceLoader::didFail() with the NSError from
QuickLook, which will call back into PreviewLoader::didFail(). We only care about network
failures in PreviewLoader, not conversion failures, so check if
m_finishedLoadingDataIntoConverter is set before continuing (like we do in
PreviewLoader::didFinishLoading()).

Fixes crash in http/tests/multipart/policy-ignore-crash.php.

* loader/ios/PreviewLoader.mm:
(WebCore::PreviewLoader::didFail):

LayoutTests:

* platform/ios/TestExpectations: Unskipped http/tests/multipart/policy-ignore-crash.php.
* platform/ios/http/tests/multipart/policy-ignore-crash-expected.txt: Added an iOS-specific result.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (214505 => 214506)


--- trunk/LayoutTests/ChangeLog	2017-03-28 23:12:45 UTC (rev 214505)
+++ trunk/LayoutTests/ChangeLog	2017-03-28 23:50:55 UTC (rev 214506)
@@ -1,3 +1,14 @@
+2017-03-28  Andy Estes  <[email protected]>
+
+        [iOS] Crash in -[WebPreviewLoader failed] when running http/tests/multipart/policy-ignore-crash.php
+        https://bugs.webkit.org/show_bug.cgi?id=170197
+        <rdar://problem/30314067>
+
+        Reviewed by Brady Eidson.
+
+        * platform/ios/TestExpectations: Unskipped http/tests/multipart/policy-ignore-crash.php.
+        * platform/ios/http/tests/multipart/policy-ignore-crash-expected.txt: Added an iOS-specific result.
+
 2017-03-28  Chris Dumez  <[email protected]>
 
         Animated SVG images are not paused when outside viewport

Modified: trunk/LayoutTests/platform/ios/TestExpectations (214505 => 214506)


--- trunk/LayoutTests/platform/ios/TestExpectations	2017-03-28 23:12:45 UTC (rev 214505)
+++ trunk/LayoutTests/platform/ios/TestExpectations	2017-03-28 23:50:55 UTC (rev 214506)
@@ -480,7 +480,6 @@
 http/tests/misc/object-embedding-svg-delayed-size-negotiation.xhtml [ Failure ]
 http/tests/misc/submit-post-keygen.html [ Failure ]
 http/tests/misc/willCacheResponse-delegate-callback.html [ Failure ]
-http/tests/multipart/policy-ignore-crash.php [ Failure ]
 http/tests/navigation/response204.html [ Failure ]
 http/tests/security/clipboard/clipboard-file-access.html [ Failure ]
 http/tests/security/contentSecurityPolicy/object-src-no-url-blocked.html [ Failure ]

Added: trunk/LayoutTests/platform/ios/http/tests/multipart/policy-ignore-crash-expected.txt (0 => 214506)


--- trunk/LayoutTests/platform/ios/http/tests/multipart/policy-ignore-crash-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/ios/http/tests/multipart/policy-ignore-crash-expected.txt	2017-03-28 23:50:55 UTC (rev 214506)
@@ -0,0 +1,4 @@
+
+ERROR_MESSAGE_MAIN
+
+ERROR_MESSAGE_REASON

Modified: trunk/Source/WebCore/ChangeLog (214505 => 214506)


--- trunk/Source/WebCore/ChangeLog	2017-03-28 23:12:45 UTC (rev 214505)
+++ trunk/Source/WebCore/ChangeLog	2017-03-28 23:50:55 UTC (rev 214506)
@@ -1,3 +1,22 @@
+2017-03-28  Andy Estes  <[email protected]>
+
+        [iOS] Crash in -[WebPreviewLoader failed] when running http/tests/multipart/policy-ignore-crash.php
+        https://bugs.webkit.org/show_bug.cgi?id=170197
+        <rdar://problem/30314067>
+
+        Reviewed by Brady Eidson.
+
+        If QuickLook conversion fails, we call ResourceLoader::didFail() with the NSError from
+        QuickLook, which will call back into PreviewLoader::didFail(). We only care about network
+        failures in PreviewLoader, not conversion failures, so check if
+        m_finishedLoadingDataIntoConverter is set before continuing (like we do in
+        PreviewLoader::didFinishLoading()).
+
+        Fixes crash in http/tests/multipart/policy-ignore-crash.php.
+
+        * loader/ios/PreviewLoader.mm:
+        (WebCore::PreviewLoader::didFail):
+
 2017-03-28  Chris Dumez  <[email protected]>
 
         Audio indicator is visible on uni-watch.com but there is no audible audio

Modified: trunk/Source/WebCore/loader/ios/PreviewLoader.mm (214505 => 214506)


--- trunk/Source/WebCore/loader/ios/PreviewLoader.mm	2017-03-28 23:12:45 UTC (rev 214505)
+++ trunk/Source/WebCore/loader/ios/PreviewLoader.mm	2017-03-28 23:50:55 UTC (rev 214506)
@@ -233,6 +233,10 @@
 
 void PreviewLoader::didFail()
 {
+    if (m_finishedLoadingDataIntoConverter)
+        return;
+
+    m_finishedLoadingDataIntoConverter = true;
     [m_previewLoader failed];
     m_previewLoader = nullptr;
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to