summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-07-20 11:40:34 +0100
committerAndras Timar <andras.timar@collabora.com>2015-08-06 12:56:40 +0200
commit441a919cf5f0fe70554f65bfa80290f20346c34f (patch)
tree570d634b1cff66056ad5d9c939dea96a156bf8fd /filter
parent5d648de823b45d6ae8dccd2f88e2184f7571fe4c (diff)
fail on short read
Change-Id: I7215cf8d8b1e4a4156c87507018de3c2b7ed08d8 (cherry picked from commit 8eaef6b5217eecaa111c80e426bdf225481a71fb) Reviewed-on: https://gerrit.libreoffice.org/17219 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-8.tiffbin0 -> 272 bytes
-rw-r--r--filter/source/graphicfilter/itiff/itiff.cxx6
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
new file mode 100644
index 000000000000..c45859720490
--- /dev/null
+++ b/filter/qa/cppunit/data/tiff/fail/hang-8.tiff
Binary files differ
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;
}