summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-07-17 16:13:17 +0100
committerMichael Stahl <Michael.Stahl@cib.de>2019-07-18 10:43:40 +0200
commitd743130a98a168ba17dcb082cd3fb6efc335a86a (patch)
tree2ae21f3eb1a12e186952dcf5c81566bc82b4a56a
parent7fd9d3e45a64495c99beb21f0ac0f7d2c16382cb (diff)
Resolves: tdf#126147 relax sanity check and allow truncated tiffs
now the start of the row of data must still exist, but the full length of the row doesn't have to exist Change-Id: I5ed8ffef2cab19f040ba789a5d82560ca6847f26 Reviewed-on: https://gerrit.libreoffice.org/75794 Tested-by: Jenkins Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
-rw-r--r--filter/source/graphicfilter/itiff/itiff.cxx11
1 files changed, 6 insertions, 5 deletions
diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx
index 956efdbb4f6c..7509777b6122 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -570,9 +570,11 @@ bool TIFFReader::ReadMap()
if ( nStrip >= aStripOffsets.size())
return false;
pTIFF->Seek( aStripOffsets[ nStrip ] + ( ny % GetRowsPerStrip() ) * nStripBytesPerRow );
- pTIFF->ReadBytes(getMapData(np), nBytesPerRow);
- if (!pTIFF->good())
- return false;
+ // tdf#126147 allow a short incomplete read
+ auto pDest = getMapData(np);
+ auto nRead = pTIFF->ReadBytes(pDest, nBytesPerRow);
+ if (nRead != nBytesPerRow)
+ memset(pDest + nRead, 0, nBytesPerRow - nRead);
}
if ( !ConvertScanline( ny ) )
return false;
@@ -1512,8 +1514,7 @@ bool TIFFReader::ReadTIFF(SvStream & rTIFF, Graphic & rGraphic )
if (bStatus)
{
auto nStart = aStripOffsets[ nStrip ] + ( ny % GetRowsPerStrip() ) * nStripBytesPerRow;
- auto nEnd = nStart + nBytesPerRow;
- if (nEnd > nEndOfFile)
+ if (nStart > nEndOfFile)
bStatus = false;
}
}