summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-07-20 11:20:45 +0100
committerAndras Timar <andras.timar@collabora.com>2015-08-06 12:56:39 +0200
commitc1c8d89fe7c95f1a52db8b53a7ce7a75b6bdc867 (patch)
treed20f596f956301fbb48fb4a61ac4c056c62b6cd9 /filter
parent1839223f35df3ae39476883376fa9c2fbf07378a (diff)
don't hang on a bad ReadCodeAndDecode
Change-Id: I999012d428fa84e21fe9e9f851a016eacc96a686 (cherry picked from commit 6964f67d0dd44c8a3c68caf194075ba5c649bf4b) Reviewed-on: https://gerrit.libreoffice.org/17217 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/qa/cppunit/data/tiff/fail/hang-7.tiffbin0 -> 504 bytes
-rw-r--r--filter/source/graphicfilter/itiff/ccidecom.cxx5
2 files changed, 4 insertions, 1 deletions
diff --git a/filter/qa/cppunit/data/tiff/fail/hang-7.tiff b/filter/qa/cppunit/data/tiff/fail/hang-7.tiff
new file mode 100644
index 000000000000..61a5f2d78850
--- /dev/null
+++ b/filter/qa/cppunit/data/tiff/fail/hang-7.tiff
Binary files differ
diff --git a/filter/source/graphicfilter/itiff/ccidecom.cxx b/filter/source/graphicfilter/itiff/ccidecom.cxx
index c1447b1691c8..5542cffcceee 100644
--- a/filter/source/graphicfilter/itiff/ccidecom.cxx
+++ b/filter/source/graphicfilter/itiff/ccidecom.cxx
@@ -1026,11 +1026,14 @@ void CCIDecompressor::Read2DScanlineData(sal_uInt8 * pTarget, sal_uInt16 nTarget
while (nBitPos<nTargetBits && bStatus) {
n2DMode=ReadCodeAndDecode(p2DModeLookUp,10);
- if (!bStatus) return;
+ if (!bStatus)
+ return;
if (n2DMode==CCI2DMODE_UNCOMP) {
for (;;) {
nUncomp=ReadCodeAndDecode(pUncompLookUp,11);
+ if (!bStatus)
+ break;
if ( nUncomp <= CCIUNCOMP_4White_1Black ) {
nRun=nUncomp-CCIUNCOMP_0White_1Black;
FillBits(pTarget,nTargetBits,nBitPos,nRun,0x00);