summaryrefslogtreecommitdiffstats
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-07-16 22:17:27 +0100
committerCaolán McNamara <caolanm@redhat.com>2011-07-16 22:17:27 +0100
commitd68e0a4eaf63da06866ec8d158907a7cfa6eeb42 (patch)
tree28937881080ba05410fa6c696ed026bb4dfedee3 /filter
parentcallcatcher: unused methods (diff)
downloadcore-d68e0a4eaf63da06866ec8d158907a7cfa6eeb42.tar.gz
core-d68e0a4eaf63da06866ec8d158907a7cfa6eeb42.zip
these can be sal_uInt32, and pre-sanity-check massive allocs
Diffstat (limited to 'filter')
-rw-r--r--filter/inc/filter/msfilter/msdffimp.hxx4
-rw-r--r--filter/source/msfilter/msdffimp.cxx19
2 files changed, 10 insertions, 13 deletions
diff --git a/filter/inc/filter/msfilter/msdffimp.hxx b/filter/inc/filter/msfilter/msdffimp.hxx
index 25880182dc02..e51791ec5b6c 100644
--- a/filter/inc/filter/msfilter/msdffimp.hxx
+++ b/filter/inc/filter/msfilter/msdffimp.hxx
@@ -542,9 +542,9 @@ protected :
/*
folgende Methoden sind zum Excel-Import zu ueberschreiben:
*/
- virtual sal_Bool ProcessClientAnchor(SvStream& rStData, sal_uLong nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const;
+ virtual sal_Bool ProcessClientAnchor(SvStream& rStData, sal_uInt32 nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const;
virtual void ProcessClientAnchor2( SvStream& rStData, DffRecordHeader& rHd, void* pData, DffObjData& );
- virtual sal_Bool ProcessClientData( SvStream& rStData, sal_uLong nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const;
+ virtual sal_Bool ProcessClientData( SvStream& rStData, sal_uInt32 nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const;
virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj = NULL);
virtual sal_uLong Calc_nBLIPPos( sal_uLong nOrgVal, sal_uLong nStreamPos ) const;
virtual bool GetColorFromPalette(sal_uInt16 nNum, Color& rColor) const;
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 02861f911c0a..8ae307b47148 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -6968,29 +6968,26 @@ sal_Bool SvxMSDffManager::ReadCommonRecordHeader( SvStream& rSt,
return rSt.GetError() == 0;
}
-
-
-
-sal_Bool SvxMSDffManager::ProcessClientAnchor(SvStream& rStData, sal_uLong nDatLen,
+sal_Bool SvxMSDffManager::ProcessClientAnchor(SvStream& rStData, sal_uInt32 nDatLen,
char*& rpBuff, sal_uInt32& rBuffLen ) const
{
if( nDatLen )
{
- rpBuff = new char[ nDatLen ];
- rBuffLen = nDatLen;
- rStData.Read( rpBuff, nDatLen );
+ rBuffLen = std::min(rStData.remainingSize(), static_cast<sal_Size>(nDatLen));
+ rpBuff = new char[rBuffLen];
+ rBuffLen = rStData.Read(rpBuff, rBuffLen);
}
return sal_True;
}
-sal_Bool SvxMSDffManager::ProcessClientData(SvStream& rStData, sal_uLong nDatLen,
+sal_Bool SvxMSDffManager::ProcessClientData(SvStream& rStData, sal_uInt32 nDatLen,
char*& rpBuff, sal_uInt32& rBuffLen ) const
{
if( nDatLen )
{
- rpBuff = new char[ nDatLen ];
- rBuffLen = nDatLen;
- rStData.Read( rpBuff, nDatLen );
+ rBuffLen = std::min(rStData.remainingSize(), static_cast<sal_Size>(nDatLen));
+ rpBuff = new char[rBuffLen];
+ rBuffLen = rStData.Read(rpBuff, rBuffLen);
}
return sal_True;
}