diff options
-rw-r--r-- | sw/source/filter/ww8/ww8par2.cxx | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index afa244ad5c87..074b908d213c 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -4138,10 +4138,19 @@ Word2CHPX ReadWord2Chpx(SvStream &rSt, std::size_t nOffset, sal_uInt8 nSize) { Word2CHPX aChpx; - if (!nSize) + if (!nSize || !checkSeek(rSt, nOffset)) return aChpx; - rSt.Seek(nOffset); + const size_t nMaxByteCount = rSt.remainingSize(); + if (!nMaxByteCount) + return aChpx; + + if (nSize > nMaxByteCount) + { + SAL_WARN("sw.ww8", "ReadWord2Chpx: truncating out of range " + << nSize << " to " << nMaxByteCount); + nSize = nMaxByteCount; + } sal_uInt8 nCount=0; |