WebKit should not decode or support PDF favicons
authortimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Apr 2013 19:45:22 +0000 (19:45 +0000)
committertimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Apr 2013 19:45:22 +0000 (19:45 +0000)
https://bugs.webkit.org/show_bug.cgi?id=114650
<rdar://problem/10133914>

Reviewed by Dan Bernstein.

Drop the image data on the floor if it begins with the PDF magic number.
No other browser I can find on OS X supports PDF favicons (by experimentation),
and we do not properly display them.

* loader/icon/IconLoader.cpp:
(WebCore::IconLoader::notifyFinished):

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

Source/WebCore/ChangeLog
Source/WebCore/loader/icon/IconLoader.cpp

index 7984fa70b66d71c68168f4ae761942bdb4b84b35..c53c41dc229d78f9fa8295c79b61dde9cb3355e0 100644 (file)
@@ -1,3 +1,18 @@
+2013-04-19  Tim Horton  <timothy_horton@apple.com>
+
+        WebKit should not decode or support PDF favicons
+        https://bugs.webkit.org/show_bug.cgi?id=114650
+        <rdar://problem/10133914>
+
+        Reviewed by Dan Bernstein.
+
+        Drop the image data on the floor if it begins with the PDF magic number.
+        No other browser I can find on OS X supports PDF favicons (by experimentation),
+        and we do not properly display them.
+
+        * loader/icon/IconLoader.cpp:
+        (WebCore::IconLoader::notifyFinished):
+
 2013-04-19  Martin Robinson  <mrobinson@igalia.com>
 
         Remove the OpenVG backend
index d7423e6aa60739c42431eb6066b8d9f0b5ee72a9..a6d6e9b279ddaaca7194ca18dbc8fff4e37dd718 100644 (file)
@@ -96,6 +96,14 @@ void IconLoader::notifyFinished(CachedResource* resource)
     if (status && (status < 200 || status > 299))
         data = 0;
 
+    static const char pdfMagicNumber[] = "%PDF";
+    static unsigned pdfMagicNumberLength = sizeof(pdfMagicNumber) - 1;
+    WTFLogAlways("%d\n", pdfMagicNumberLength);
+    if (data && data->size() >= pdfMagicNumberLength && !memcmp(data->data(), pdfMagicNumber, pdfMagicNumberLength)) {
+        LOG(IconDatabase, "IconLoader::finishLoading() - Ignoring icon at %s because it appears to be a PDF", resource->url().string().ascii().data());
+        data = 0;
+    }
+
     LOG(IconDatabase, "IconLoader::finishLoading() - Committing iconURL %s to database", resource->url().string().ascii().data());
     m_frame->loader()->icon()->commitToDatabase(resource->url());
     // Setting the icon data only after committing to the database ensures that the data is