Don't crash on broken GIF images
authorLars Knoll <lars.knoll@digia.com>
Thu, 24 Apr 2014 13:33:27 +0000 (15:33 +0200)
committerRaspbian forward porter <root@raspbian.org>
Sun, 14 Jun 2015 16:38:43 +0000 (16:38 +0000)
Broken GIF images could set invalid width and height
values inside the image, leading to Qt creating a null
QImage for it. In that case we need to abort decoding
the image and return an error.

Initial patch by Rich Moore.

Backport of Id82a4036f478bd6e49c402d6598f57e7e5bb5e1e from Qt 5

Task-number: QTBUG-38367
Change-Id: I0680740018aaa8356d267b7af3f01fac3697312a
Security-advisory: CVE-2014-0190

Gbp-Pq: Name dont_crash_on_broken_gif_images.patch

src/gui/image/qgifhandler.cpp

index 5199dd39c22becc95bb3cfaf7578c9f7c09230fe..6540f8aece53c551851aafbd7b5add0ea0a4e54c 100644 (file)
@@ -366,6 +366,13 @@ int QGIFFormat::decode(QImage *image, const uchar *buffer, int length,
                     return -1;
                 }
 
+                // Check if the previous attempt to create the image failed. If it
+                // did then the image is broken and we should give up.
+                if (image->isNull()) {
+                    state = Error;
+                    return -1;
+                }
+
                 disposePrevious(image);
                 disposed = false;