diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-07-20 11:20:45 +0100 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2015-07-20 10:39:57 +0000 |
commit | 4df53f3d14048492375b5b9bfe17cca4f9452c68 (patch) | |
tree | 51f3a56a93b97eec154d79b948eedd8733830a99 | |
parent | 60ec59d671058d8996cd0edf683078aae34d96af (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>
-rw-r--r-- | filter/qa/cppunit/data/tiff/fail/hang-7.tiff | bin | 0 -> 504 bytes | |||
-rw-r--r-- | filter/source/graphicfilter/itiff/ccidecom.cxx | 5 |
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 Binary files differnew file mode 100644 index 000000000000..61a5f2d78850 --- /dev/null +++ b/filter/qa/cppunit/data/tiff/fail/hang-7.tiff 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); |