diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-07-20 11:40:34 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-07-20 11:46:21 +0100 |
commit | 8eaef6b5217eecaa111c80e426bdf225481a71fb (patch) | |
tree | ebdadb5900114f0d3c5767facc930226a85e3cf7 | |
parent | 68fed3540a70e6d9d71ee9a9512dd406dadb371f (diff) |
fail on short read
Change-Id: I7215cf8d8b1e4a4156c87507018de3c2b7ed08d8
-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; } |