Title: [288680] trunk/Source/WebCore
Revision
288680
Author
commit-qu...@webkit.org
Date
2022-01-27 10:27:22 -0800 (Thu, 27 Jan 2022)

Log Message

Detect failed ThreadableLoader creation in FileReaderLoader.
https://bugs.webkit.org/show_bug.cgi?id=235566

Patch by Gavin Phillips <gavi...@apple.com> on 2022-01-27
Reviewed by Youenn Fablet.

When we fail to successfully create a ThreadableLoader in FileReaderLoader we should catch
the failure and return early.

* Modules/fetch/FormDataConsumer.cpp:
(WebCore::FormDataConsumer::consumeBlob):
* fileapi/FileReaderLoader.cpp:
(WebCore::FileReaderLoader::start):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (288679 => 288680)


--- trunk/Source/WebCore/ChangeLog	2022-01-27 18:17:09 UTC (rev 288679)
+++ trunk/Source/WebCore/ChangeLog	2022-01-27 18:27:22 UTC (rev 288680)
@@ -1,3 +1,18 @@
+2022-01-27  Gavin Phillips  <gavi...@apple.com>
+
+        Detect failed ThreadableLoader creation in FileReaderLoader.
+        https://bugs.webkit.org/show_bug.cgi?id=235566
+
+        Reviewed by Youenn Fablet.
+
+        When we fail to successfully create a ThreadableLoader in FileReaderLoader we should catch
+        the failure and return early.
+
+        * Modules/fetch/FormDataConsumer.cpp:
+        (WebCore::FormDataConsumer::consumeBlob):
+        * fileapi/FileReaderLoader.cpp:
+        (WebCore::FileReaderLoader::start):
+
 2022-01-27  Alexander Mikhaylenko  <al...@gnome.org>
 
         [GTK] Support accent colors

Modified: trunk/Source/WebCore/Modules/fetch/FormDataConsumer.cpp (288679 => 288680)


--- trunk/Source/WebCore/Modules/fetch/FormDataConsumer.cpp	2022-01-27 18:17:09 UTC (rev 288679)
+++ trunk/Source/WebCore/Modules/fetch/FormDataConsumer.cpp	2022-01-27 18:27:22 UTC (rev 288680)
@@ -95,6 +95,9 @@
             return;
 
         auto loader = std::exchange(weakThis->m_blobLoader, { });
+        if (!loader)
+            return;
+
         if (auto optionalErrorCode = loader->errorCode()) {
             if (weakThis->m_callback)
                 weakThis->m_callback(Exception { InvalidStateError, "Failed to read form data blob"_s });
@@ -107,7 +110,7 @@
 
     m_blobLoader->start(blobURL, m_context.get(), FileReaderLoader::ReadAsArrayBuffer);
 
-    if (!m_blobLoader->isLoading()) {
+    if (!m_blobLoader || !m_blobLoader->isLoading()) {
         m_callback(Exception { InvalidStateError, "Unable to read form data blob"_s });
         m_blobLoader = nullptr;
     }

Modified: trunk/Source/WebCore/fileapi/FileReaderLoader.cpp (288679 => 288680)


--- trunk/Source/WebCore/fileapi/FileReaderLoader.cpp	2022-01-27 18:17:09 UTC (rev 288679)
+++ trunk/Source/WebCore/fileapi/FileReaderLoader.cpp	2022-01-27 18:27:22 UTC (rev 288680)
@@ -101,9 +101,12 @@
     options.mode = FetchOptions::Mode::SameOrigin;
     options.contentSecurityPolicyEnforcement = ContentSecurityPolicyEnforcement::DoNotEnforce;
 
-    if (m_client)
-        m_loader = ThreadableLoader::create(*scriptExecutionContext, *this, WTFMove(request), options);
-    else
+    if (m_client) {
+        auto loader = ThreadableLoader::create(*scriptExecutionContext, *this, WTFMove(request), options);
+        if (!loader)
+            return;
+        std::exchange(m_loader, loader);
+    } else
         ThreadableLoader::loadResourceSynchronously(*scriptExecutionContext, WTFMove(request), *this, options);
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to