[Libreoffice-commits] .: Branch 'libreoffice-3-5' - sc/source

Petr Mladek pmladek at kemper.freedesktop.org
Tue Jul 31 01:11:53 PDT 2012


 sc/source/filter/ftools/ftools.cxx |   10 +++++++---
 sc/source/filter/qpro/qpro.cxx     |   20 +++++++++++++++-----
 2 files changed, 22 insertions(+), 8 deletions(-)

New commits:
commit 079223a9680c0a0c232c6615203817c4eb147226
Author: Eike Rathke [er] <eike.rathke at oracle.com>
Date:   Tue Jul 31 10:00:56 2012 +0200

    QuattroPro warnings

diff --git a/sc/source/filter/ftools/ftools.cxx b/sc/source/filter/ftools/ftools.cxx
index 52f848e..cb224bc 100644
--- a/sc/source/filter/ftools/ftools.cxx
+++ b/sc/source/filter/ftools/ftools.cxx
@@ -280,7 +280,8 @@ ByteString ScfTools::ReadCString( SvStream& rStrm )
 {
     rtl::OStringBuffer aRet;
 
-    while (1)
+    sal_uInt32 nLen = 0;
+    while (nLen++ < STRING_MAXLEN)
     {
         sal_Char cChar(0);
         rStrm >> cChar;
@@ -288,7 +289,9 @@ ByteString ScfTools::ReadCString( SvStream& rStrm )
             break;
         aRet.append(cChar);
     }
-
+    // Callers assume that a 0-byte was read and may advance their book keeping
+    // counters by String.Len()+1, don't put back cChar!=0 if STRING_MAXLEN was
+    // reached.
     return aRet.makeStringAndClear();
 }
 
@@ -296,7 +299,8 @@ ByteString ScfTools::ReadCString( SvStream& rStrm, sal_Int32& rnBytesLeft )
 {
     rtl::OStringBuffer aRet;
 
-    while (1)
+    sal_uInt32 nLen = 0;
+    while (nLen++ < STRING_MAXLEN)
     {
         sal_Char cChar(0);
         rStrm >> cChar;
diff --git a/sc/source/filter/qpro/qpro.cxx b/sc/source/filter/qpro/qpro.cxx
index b8ee3ab..8572e66 100644
--- a/sc/source/filter/qpro/qpro.cxx
+++ b/sc/source/filter/qpro/qpro.cxx
@@ -64,10 +64,16 @@ FltError ScQProReader::readSheet( SCTAB nTab, ScDocument* pDoc, ScQProStyle *pSt
             case 0x000f:{ // Label cell
                 String aLabel;
                 *mpStream >> nCol >> nDummy >> nRow >> nStyle >> nDummy;
-                readString( aLabel, getLength() - 7 );
-                nStyle = nStyle >> 3;
-                pStyle->SetFormat( pDoc, nCol, nRow, nTab, nStyle );
-                pDoc->PutCell( nCol, nRow, nTab, ScBaseCell::CreateTextCell( aLabel, pDoc ), true );
+                sal_uInt16 nLen = getLength();
+                if (nLen >= 7)
+                {
+                    readString( aLabel, nLen - 7 );
+                    nStyle = nStyle >> 3;
+                    pStyle->SetFormat( pDoc, nCol, nRow, nTab, nStyle );
+                    pDoc->PutCell( nCol, nRow, nTab, ScBaseCell::CreateTextCell( aLabel, pDoc ), true );
+                }
+                else
+                    eRet = eERR_FORMAT;
                 }
                 break;
 
@@ -195,7 +201,11 @@ FltError ScQProReader::import( ScDocument *pDoc )
                 String aLabel;
                 *mpStream >> nPtSize >> nFontAttr;
                 pStyleElement->setFontRecord( j, nFontAttr, nPtSize );
-                readString( aLabel, getLength() - 4 );
+                sal_uInt16 nLen = getLength();
+                if (nLen >= 4)
+                    readString( aLabel, nLen - 4 );
+                else
+                    eRet = eERR_FORMAT;
                 pStyleElement->setFontType( j, aLabel );
                 j++;
                 }


More information about the Libreoffice-commits mailing list