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]

Reply via email to