User: obo Date: 06/01/16 07:04:02 Modified: /dba/connectivity/source/drivers/dbase/ DTable.cxx
Log: INTEGRATION: CWS dba202b (1.90.20); FILE MERGED 2005/12/12 13:52:02 oj 1.90.20.2: #128925# check row length 2005/11/28 08:53:07 oj 1.90.20.1: #127372# check if buffer is not null at pos inside buffer length File Changes: Directory: /dba/connectivity/source/drivers/dbase/ ================================================== File [changed]: DTable.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/dbase/DTable.cxx?r1=1.90&r2=1.91 Delta lines: +10 -3 -------------------- --- DTable.cxx 24 Oct 2005 08:20:50 -0000 1.90 +++ DTable.cxx 16 Jan 2006 15:03:59 -0000 1.91 @@ -650,7 +650,7 @@ sal_Int32 nByteOffset = 1; // Felder: OSQLColumns::const_iterator aIter = _rCols.begin(); - for (sal_Int32 i = 1; aIter != _rCols.end();++aIter, i++) + for (sal_Int32 i = 1; aIter != _rCols.end() && nByteOffset <= m_nBufferSize && i < _rRow->size();++aIter, i++) { // Laengen je nach Datentyp: sal_Int32 nLen; @@ -682,10 +682,11 @@ } // Ist die Variable ueberhaupt gebunden? - if (!(*_rRow)[i]->isBound()) + if ( !(*_rRow)[i]->isBound() ) { // Nein - naechstes Feld. nByteOffset += nLen; + OSL_ENSURE( nByteOffset <= m_nBufferSize ,"ByteOffset > m_nBufferSize!"); continue; } @@ -782,6 +783,7 @@ // break; // Und weiter ... nByteOffset += nLen; + OSL_ENSURE( nByteOffset <= m_nBufferSize ,"ByteOffset > m_nBufferSize!"); } return sal_True; } @@ -1392,6 +1394,9 @@ //------------------------------------------------------------------ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const Reference<XIndexAccess>& _xCols) { + OSL_ENSURE(m_pBuffer,"Buffer is NULL!"); + if ( !m_pBuffer ) + return FALSE; sal_Int32 nByteOffset = 1; // Felder aktualisieren: @@ -1464,7 +1469,7 @@ // when we are here there is no double key in the table - for (i = 0; i < nColumnCount; ++i) + for (i = 0; i < nColumnCount && nByteOffset <= m_nBufferSize ; ++i) { // Laengen je nach Datentyp: OSL_ENSURE(i < m_aPrecisions.size(),"Illegal index!"); @@ -1550,6 +1555,7 @@ { memset(pData,' ',nLen); // Zuruecksetzen auf NULL nByteOffset += nLen; + OSL_ENSURE( nByteOffset <= m_nBufferSize ,"ByteOffset > m_nBufferSize!"); continue; } @@ -1675,6 +1681,7 @@ } // Und weiter ... nByteOffset += nLen; + OSL_ENSURE( nByteOffset <= m_nBufferSize ,"ByteOffset > m_nBufferSize!"); } return sal_True; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
