Tag: cws_src680_dba202b
User: oj      
Date: 05/11/28 00:53:10

Modified:
 /dba/connectivity/source/drivers/dbase/
  DTable.cxx

Log:
 #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.90.20.1
Delta lines:  +12 -5
--------------------
--- DTable.cxx  24 Oct 2005 08:20:50 -0000      1.90
+++ DTable.cxx  28 Nov 2005 08:53:07 -0000      1.90.20.1
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: DTable.cxx,v $
  *
- *  $Revision: 1.90 $
+ *  $Revision: 1.90.20.1 $
  *
- *  last change: $Author: rt $ $Date: 2005/10/24 08:20:50 $
+ *  last change: $Author: oj $ $Date: 2005/11/28 08:53:07 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -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 ;++aIter, i++)
        {
                // Laengen je nach Datentyp:
                sal_Int32 nLen;
@@ -686,6 +686,7 @@
                {
                        // 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