diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-07-20 11:20:45 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-08-06 12:56:39 +0200 |
commit | c1c8d89fe7c95f1a52db8b53a7ce7a75b6bdc867 (patch) | |
tree | d20f596f956301fbb48fb4a61ac4c056c62b6cd9 /filter | |
parent | 1839223f35df3ae39476883376fa9c2fbf07378a (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.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); |