summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-09-28 09:35:23 +0100
committerAndras Timar <andras.timar@collabora.com>2015-10-02 14:58:36 +0200
commit65f7589aabc5ca6e5cdb311580d293c2b9e54de1 (patch)
treee616b0b4394a80d231b734d4ae4ce7813a4ad491
parentdcdb228bda38090aa75ddb5c8c7b9a1c11e2e4b9 (diff)
wmf spec says that these are only allowed bitcount values
Change-Id: Ia174feec73ee676567a3632d2f88b11c176b6363 (cherry picked from commit b107353addfe35cc40864b7fb5ff4fee42fff6cf) Reviewed-on: https://gerrit.libreoffice.org/18903 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--vcl/qa/cppunit/graphicfilter/data/wmf/fail/bitcount-1.wmfbin0 -> 1916 bytes
-rw-r--r--vcl/source/gdi/dibtools.cxx14
2 files changed, 13 insertions, 1 deletions
diff --git a/vcl/qa/cppunit/graphicfilter/data/wmf/fail/bitcount-1.wmf b/vcl/qa/cppunit/graphicfilter/data/wmf/fail/bitcount-1.wmf
new file mode 100644
index 000000000000..2ec88066f527
--- /dev/null
+++ b/vcl/qa/cppunit/graphicfilter/data/wmf/fail/bitcount-1.wmf
Binary files differ
diff --git a/vcl/source/gdi/dibtools.cxx b/vcl/source/gdi/dibtools.cxx
index 247ce7c9378a..a018bebcb7c5 100644
--- a/vcl/source/gdi/dibtools.cxx
+++ b/vcl/source/gdi/dibtools.cxx
@@ -276,7 +276,19 @@ bool ImplReadDIBInfoHeader(SvStream& rIStm, DIBV5Header& rHeader, bool& bTopDown
rHeader.nSizeImage = 0;
}
- return( ( rHeader.nPlanes == 1 ) && ( rIStm.GetError() == 0UL ) );
+
+ if (rHeader.nPlanes != 1)
+ return false;
+
+ if (rHeader.nBitCount != 0 && rHeader.nBitCount != 1 &&
+ rHeader.nBitCount != 4 && rHeader.nBitCount != 8 &&
+ rHeader.nBitCount != 16 && rHeader.nBitCount != 24 &&
+ rHeader.nBitCount != 32)
+ {
+ return false;
+ }
+
+ return rIStm.good();
}
bool ImplReadDIBPalette( SvStream& rIStm, BitmapWriteAccess& rAcc, bool bQuad )