diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-07-16 22:17:27 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2011-07-16 22:17:27 +0100 |
commit | d68e0a4eaf63da06866ec8d158907a7cfa6eeb42 (patch) | |
tree | 28937881080ba05410fa6c696ed026bb4dfedee3 /filter | |
parent | callcatcher: unused methods (diff) | |
download | core-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.hxx | 4 | ||||
-rw-r--r-- | filter/source/msfilter/msdffimp.cxx | 19 |
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; } |