diff options
-rw-r--r-- | filter/qa/cppunit/data/tiff/fail/hang-8.tiff | bin | 0 -> 272 bytes | |||
-rw-r--r-- | filter/source/graphicfilter/itiff/itiff.cxx | 6 |
2 files changed, 4 insertions, 2 deletions
diff --git a/filter/qa/cppunit/data/tiff/fail/hang-8.tiff b/filter/qa/cppunit/data/tiff/fail/hang-8.tiff Binary files differnew file mode 100644 index 000000000000..c45859720490 --- /dev/null +++ b/filter/qa/cppunit/data/tiff/fail/hang-8.tiff diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx index f0c5d1edb4bf..769c57e02a9a 100644 --- a/filter/source/graphicfilter/itiff/itiff.cxx +++ b/filter/source/graphicfilter/itiff/itiff.cxx @@ -656,7 +656,7 @@ bool TIFFReader::ReadMap() } else if ( nCompression == 32773 ) { - sal_uLong nStrip,nRecCount,nRowBytesLeft,np,i; + sal_uLong nStrip,nRecCount,np,i; sal_uInt8 * pdst; nStrip = 0; if ( nStrip >= nNumStripOffsets ) @@ -673,7 +673,7 @@ bool TIFFReader::ReadMap() return false; pTIFF->Seek(pStripOffsets[nStrip]); } - nRowBytesLeft = nBytesPerRow; + sal_uLong nRowBytesLeft = nBytesPerRow; if (np >= SAL_N_ELEMENTS(pMap)) return false; pdst=pMap[ np ]; @@ -687,6 +687,8 @@ bool TIFFReader::ReadMap() if ( nRecCount > nRowBytesLeft ) return false; pTIFF->Read(pdst,nRecCount); + if (!pTIFF->good()) + return false; pdst+=nRecCount; nRowBytesLeft-=nRecCount; } |