summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filter/source/msfilter/msdffimp.cxx6
-rw-r--r--svx/inc/svx/msdffdef.hxx3
2 files changed, 6 insertions, 3 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 8f25ac828f30..5871da971ef9 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -3422,6 +3422,8 @@ bool SvxMSDffManager::SeekToRec( SvStream& rSt, sal_uInt16 nRecId, sal_uLong nMa
rSt >> aHd;
if (!rSt.good())
break;
+ if (aHd.nRecLen > nMaxLegalDffRecordLength)
+ break;
if ( aHd.nRecType == nRecId )
{
if ( nSkipCount )
@@ -6818,8 +6820,6 @@ bool SvxMSDffManager::ReadCommonRecordHeader(DffRecordHeader& rRec,
rRec.nRecInstance, rRec.nRecType, rRec.nRecLen);
}
-sal_uInt32 nMaxLegalRecordLength = SAL_MAX_UINT32 - DFF_COMMON_RECORD_HEADER_SIZE;
-
/* also static */
bool SvxMSDffManager::ReadCommonRecordHeader(SvStream& rSt,
sal_uInt8& rVer, sal_uInt16& rInst, sal_uInt16& rFbt, sal_uInt32& rLength)
@@ -6830,7 +6830,7 @@ bool SvxMSDffManager::ReadCommonRecordHeader(SvStream& rSt,
rInst = nTmp >> 4;
if (!rSt.good())
return false;
- if (rLength > nMaxLegalRecordLength)
+ if (rLength > nMaxLegalDffRecordLength)
return false;
return true;
}
diff --git a/svx/inc/svx/msdffdef.hxx b/svx/inc/svx/msdffdef.hxx
index 42acdbb83233..016197f83dc4 100644
--- a/svx/inc/svx/msdffdef.hxx
+++ b/svx/inc/svx/msdffdef.hxx
@@ -37,6 +37,9 @@
#define DFF_COMMON_RECORD_HEADER_SIZE 8
+const sal_uInt32 nMaxLegalDffRecordLength = \
+ SAL_MAX_UINT32 - DFF_COMMON_RECORD_HEADER_SIZE;
+
#define DFF_PSFLAG_CONTAINER 0x0F // If the version field of a record
// header takes on this value, the
// record header marks the start of