Title: [276954] trunk/Source/WebKit
Revision
276954
Author
commit-qu...@webkit.org
Date
2021-05-04 05:38:18 -0700 (Tue, 04 May 2021)

Log Message

[GTK] segmentation fault in WebKit::IconDatabase::loadIconForPageURL
https://bugs.webkit.org/show_bug.cgi?id=225279

Patch by Jim Mason <jma...@ibinx.com> on 2021-05-04
Reviewed by Carlos Garcia Campos.

* UIProcess/API/glib/IconDatabase.cpp:
(WebKit::IconDatabase::loadIconForPageURL):
(WebKit::IconDatabase::setIconForPageURL):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (276953 => 276954)


--- trunk/Source/WebKit/ChangeLog	2021-05-04 11:13:37 UTC (rev 276953)
+++ trunk/Source/WebKit/ChangeLog	2021-05-04 12:38:18 UTC (rev 276954)
@@ -1,3 +1,14 @@
+2021-05-04  Jim Mason  <jma...@ibinx.com>
+
+        [GTK] segmentation fault in WebKit::IconDatabase::loadIconForPageURL
+        https://bugs.webkit.org/show_bug.cgi?id=225279
+
+        Reviewed by Carlos Garcia Campos.
+
+        * UIProcess/API/glib/IconDatabase.cpp:
+        (WebKit::IconDatabase::loadIconForPageURL):
+        (WebKit::IconDatabase::setIconForPageURL):
+
 2021-05-04  Youenn Fablet  <you...@apple.com>
 
         Use OptionSet for MediaProducer::MediaStateFlags

Modified: trunk/Source/WebKit/UIProcess/API/glib/IconDatabase.cpp (276953 => 276954)


--- trunk/Source/WebKit/UIProcess/API/glib/IconDatabase.cpp	2021-05-04 11:13:37 UTC (rev 276953)
+++ trunk/Source/WebKit/UIProcess/API/glib/IconDatabase.cpp	2021-05-04 12:38:18 UTC (rev 276954)
@@ -581,7 +581,14 @@
                     completionHandler(nullptr);
                     return;
                 }
-                addResult.iterator->value.first = image->nativeImageForCurrentFrame()->platformImage();
+
+                auto nativeImage = image->nativeImageForCurrentFrame();
+                if (!nativeImage) {
+                    completionHandler(nullptr);
+                    return;
+                }
+
+                addResult.iterator->value.first = nativeImage->platformImage();
             }
 
             auto icon = addResult.iterator->value.first;
@@ -611,11 +618,12 @@
             LockHolder lockHolder(m_loadedIconsLock);
             auto addResult = m_loadedIcons.set(iconURL, std::make_pair<PlatformImagePtr, MonotonicTime>(nullptr, { }));
             if (iconDataSize) {
+                RefPtr<NativeImage> nativeImage;
                 auto image = BitmapImage::create();
-                if (image->setData(SharedBuffer::create(iconData, iconDataSize), true) < EncodedDataStatus::SizeAvailable)
+                if (image->setData(SharedBuffer::create(iconData, iconDataSize), true) >= EncodedDataStatus::SizeAvailable && (nativeImage = image->nativeImageForCurrentFrame()))
+                    addResult.iterator->value.first = nativeImage->platformImage();
+                else
                     result = false;
-                else
-                    addResult.iterator->value.first = image->nativeImageForCurrentFrame()->platformImage();
             }
         }
         startClearLoadedIconsTimer();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to