diff options
Diffstat (limited to 'meta/recipes-qt/qt4/qt4-4.8.6/0035-Fixes-crash-in-bmp-and-ico-image-decoding.patch')
-rw-r--r-- | meta/recipes-qt/qt4/qt4-4.8.6/0035-Fixes-crash-in-bmp-and-ico-image-decoding.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/meta/recipes-qt/qt4/qt4-4.8.6/0035-Fixes-crash-in-bmp-and-ico-image-decoding.patch b/meta/recipes-qt/qt4/qt4-4.8.6/0035-Fixes-crash-in-bmp-and-ico-image-decoding.patch new file mode 100644 index 0000000000..c88879a38a --- /dev/null +++ b/meta/recipes-qt/qt4/qt4-4.8.6/0035-Fixes-crash-in-bmp-and-ico-image-decoding.patch | |||
@@ -0,0 +1,71 @@ | |||
1 | Upstream-Status: Backport | ||
2 | |||
3 | Backport patch to fix CVE-2015-1858 and CVE-2015-1859 | ||
4 | |||
5 | http://code.qt.io/cgit/qt/qt.git/commit/?id=3e55cd6 | ||
6 | |||
7 | Signed-off-by: Kai Kang <kai.kang@windriver.com> | ||
8 | --- | ||
9 | From 3e55cd6dc467303a3c35312e9fcb255c2c048b32 Mon Sep 17 00:00:00 2001 | ||
10 | From: Eirik Aavitsland <eirik.aavitsland@theqtcompany.com> | ||
11 | Date: Wed, 11 Mar 2015 13:34:01 +0100 | ||
12 | Subject: [PATCH] Fixes crash in bmp and ico image decoding | ||
13 | |||
14 | Fuzzing test revealed that for certain malformed bmp and ico files, | ||
15 | the handler would segfault. | ||
16 | |||
17 | Change-Id: I19d45145f31e7f808f7f6a1a1610270ea4159cbe | ||
18 | (cherry picked from qtbase/2adbbae5432aa9d8cc41c6fcf55c2e310d2d4078) | ||
19 | Reviewed-by: Richard J. Moore <rich@kde.org> | ||
20 | --- | ||
21 | src/gui/image/qbmphandler.cpp | 13 +++++++------ | ||
22 | src/plugins/imageformats/ico/qicohandler.cpp | 2 +- | ||
23 | 2 files changed, 8 insertions(+), 7 deletions(-) | ||
24 | |||
25 | diff --git a/src/gui/image/qbmphandler.cpp b/src/gui/image/qbmphandler.cpp | ||
26 | index 30fa9e0..17a880b 100644 | ||
27 | --- a/src/gui/image/qbmphandler.cpp | ||
28 | +++ b/src/gui/image/qbmphandler.cpp | ||
29 | @@ -478,12 +478,6 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, int offset, int | ||
30 | p = data + (h-y-1)*bpl; | ||
31 | break; | ||
32 | case 2: // delta (jump) | ||
33 | - // Protection | ||
34 | - if ((uint)x >= (uint)w) | ||
35 | - x = w-1; | ||
36 | - if ((uint)y >= (uint)h) | ||
37 | - y = h-1; | ||
38 | - | ||
39 | { | ||
40 | quint8 tmp; | ||
41 | d->getChar((char *)&tmp); | ||
42 | @@ -491,6 +485,13 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, int offset, int | ||
43 | d->getChar((char *)&tmp); | ||
44 | y += tmp; | ||
45 | } | ||
46 | + | ||
47 | + // Protection | ||
48 | + if ((uint)x >= (uint)w) | ||
49 | + x = w-1; | ||
50 | + if ((uint)y >= (uint)h) | ||
51 | + y = h-1; | ||
52 | + | ||
53 | p = data + (h-y-1)*bpl + x; | ||
54 | break; | ||
55 | default: // absolute mode | ||
56 | diff --git a/src/plugins/imageformats/ico/qicohandler.cpp b/src/plugins/imageformats/ico/qicohandler.cpp | ||
57 | index 1a88605..3c34765 100644 | ||
58 | --- a/src/plugins/imageformats/ico/qicohandler.cpp | ||
59 | +++ b/src/plugins/imageformats/ico/qicohandler.cpp | ||
60 | @@ -571,7 +571,7 @@ QImage ICOReader::iconAt(int index) | ||
61 | QImage::Format format = QImage::Format_ARGB32; | ||
62 | if (icoAttrib.nbits == 24) | ||
63 | format = QImage::Format_RGB32; | ||
64 | - else if (icoAttrib.ncolors == 2) | ||
65 | + else if (icoAttrib.ncolors == 2 && icoAttrib.depth == 1) | ||
66 | format = QImage::Format_Mono; | ||
67 | else if (icoAttrib.ncolors > 0) | ||
68 | format = QImage::Format_Indexed8; | ||
69 | -- | ||
70 | 2.4.1 | ||
71 | |||