diff options
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/source/misc/imap.cxx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/svtools/source/misc/imap.cxx b/svtools/source/misc/imap.cxx index 4eebd55d9638..344372d279de 100644 --- a/svtools/source/misc/imap.cxx +++ b/svtools/source/misc/imap.cxx @@ -883,8 +883,18 @@ void ImageMap::ImpWriteImageMap( SvStream& rOStm, const OUString& rBaseURL ) con void ImageMap::ImpReadImageMap( SvStream& rIStm, size_t nCount, const OUString& rBaseURL ) { + const size_t nMinRecordSize = 12; //circle, three 32bit numbers + const size_t nMaxRecords = rIStm.remainingSize() / nMinRecordSize; + + if (nCount > nMaxRecords) + { + SAL_WARN("svtools.misc", "Parsing error: " << nMaxRecords << " max possible entries, but " << + nCount << " claimed, truncating"); + nCount = nMaxRecords; + } + // neue Objekte einlesen - for ( size_t i = 0; i < nCount; i++ ) + for (size_t i = 0; i < nCount; ++i) { sal_uInt16 nType; |