summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 d2bb00e3720f..9c2236689fac 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -568,9 +568,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;
@@ -1510,8 +1512,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;
}
}