[Libreoffice-commits] core.git: 13 commits - basic/source cppuhelper/source cui/source editeng/source filter/source sc/source vcl/source xmlsecurity/source

Caolán McNamara caolanm at redhat.com
Sun Jan 25 15:06:33 PST 2015


 basic/source/comp/buffer.cxx                                |    5 ---
 cppuhelper/source/component_context.cxx                     |   12 +++++----
 cui/source/inc/insdlg.hxx                                   |    2 -
 editeng/source/accessibility/AccessibleEditableTextPara.cxx |   10 +++++--
 editeng/source/items/flditem.cxx                            |    9 ++++++
 filter/source/graphicfilter/itiff/itiff.cxx                 |    9 ++++++
 filter/source/msfilter/svdfppt.cxx                          |   16 ++++++++++--
 sc/source/core/data/documen4.cxx                            |    8 ++++--
 vcl/source/window/dlgctrl.cxx                               |    6 ++--
 xmlsecurity/source/helper/xsecctl.cxx                       |   12 +++------
 10 files changed, 60 insertions(+), 29 deletions(-)

New commits:
commit 784d069cc1d9f1d6e6a4e543a278376ab483d1eb
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 21:28:20 2015 +0000

    coverity#1266475 Dereference null return value
    
    Change-Id: Ife68d6e6d837d1e4e1e1de3a82998866e5ef7e83

diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index a7d6e7a..2b63b3f 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -231,7 +231,7 @@ vcl::Window* Window::ImplGetDlgWindow( sal_uInt16 nIndex, sal_uInt16 nType,
                     pWindow = ImplGetChildWindow( this, nFormStart, i, true );
             }
 
-            if ( i <= nFormEnd )
+            if (i <= nFormEnd && pWindow)
             {
                 // carry the 2nd index, in case all controls are disabled
                 sal_uInt16 nStartIndex2 = i;
@@ -252,9 +252,9 @@ vcl::Window* Window::ImplGetDlgWindow( sal_uInt16 nIndex, sal_uInt16 nType,
                     else
                         pWindow = ImplGetNextWindow( this, i, i, true );
                 }
-                while ( (i != nStartIndex) && (i != nStartIndex2) );
+                while (i != nStartIndex && i != nStartIndex2 && pWindow);
 
-                if ( (i == nStartIndex2) &&
+                if ( (i == nStartIndex2) && pWindow &&
                      (!(pWindow->GetStyle() & WB_TABSTOP) || !isEnabledInLayout(pWindow)) )
                     i = nStartIndex;
             }
commit 6347df7af9a6c095da49c353aa8cc31914da8510
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 21:24:41 2015 +0000

    coverity#1266458 Argument cannot be negative
    
    and
    
    coverity#1266464 Argument cannot be negative
    
    Change-Id: I27fb7789cd37046fcdaeaaa801d6dc0547a8afa1

diff --git a/xmlsecurity/source/helper/xsecctl.cxx b/xmlsecurity/source/helper/xsecctl.cxx
index 66edb6a..1225097 100644
--- a/xmlsecurity/source/helper/xsecctl.cxx
+++ b/xmlsecurity/source/helper/xsecctl.cxx
@@ -1019,10 +1019,8 @@ void SAL_CALL XSecController::signatureCreated( sal_Int32 securityId, com::sun::
         throw (com::sun::star::uno::RuntimeException, std::exception)
 {
     int index = findSignatureInfor(securityId);
-    DBG_ASSERT( index != -1, "Signature Not Found!" );
-
-    SignatureInformation& signatureInfor = m_vInternalSignatureInformations[index].signatureInfor;
-
+    assert(index != -1 && "Signature Not Found!");
+    SignatureInformation& signatureInfor = m_vInternalSignatureInformations.at(index).signatureInfor;
     signatureInfor.nStatus = nResult;
 }
 
@@ -1033,10 +1031,8 @@ void SAL_CALL XSecController::signatureVerified( sal_Int32 securityId, com::sun:
         throw (com::sun::star::uno::RuntimeException, std::exception)
 {
     int index = findSignatureInfor(securityId);
-    DBG_ASSERT( index != -1, "Signature Not Found!" );
-
-    SignatureInformation& signatureInfor = m_vInternalSignatureInformations[index].signatureInfor;
-
+    assert(index != -1 && "Signature Not Found!");
+    SignatureInformation& signatureInfor = m_vInternalSignatureInformations.at(index).signatureInfor;
     signatureInfor.nStatus = nResult;
 }
 
commit e11fe1886a58498899d7b074348186a46c5f6ac6
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 21:20:32 2015 +0000

    coverity#1266474 Dereference null return value
    
    Change-Id: I240be73629a26a7067bfde5d2b662315a3259d1f

diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index 27f8a20..ba09b3b 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -82,14 +82,19 @@ bool ScDocument::Solver(SCCOL nFCol, SCROW nFRow, SCTAB nFTab,
         GetCellType(nVCol, nVRow, nVTab, eVType);
         // #i108005# convert target value to number using default format,
         // as previously done in ScInterpreter::GetDouble
+        ScFormulaCell* pFormula = NULL;
         double fTargetVal = 0.0;
         sal_uInt32 nFIndex = 0;
         if ( eFType == CELLTYPE_FORMULA && eVType == CELLTYPE_VALUE &&
              GetFormatTable()->IsNumberFormat( sValStr, nFIndex, fTargetVal ) )
         {
+            ScAddress aFormulaAdr( nFCol, nFRow, nFTab );
+            pFormula = GetFormulaCell( aFormulaAdr );
+        }
+        if (pFormula)
+        {
             bool bDoneIteration = false;
             ScAddress aValueAdr( nVCol, nVRow, nVTab );
-            ScAddress aFormulaAdr( nFCol, nFRow, nFTab );
             double* pVCell = GetValueCell( aValueAdr );
 
             ScRange aVRange( aValueAdr, aValueAdr );    // for SetDirty
@@ -104,7 +109,6 @@ bool ScDocument::Solver(SCCOL nFCol, SCROW nFRow, SCTAB nFTab,
             double fBestF, fFPrev;
             fBestX = fXPrev = fSaveVal;
 
-            ScFormulaCell* pFormula = GetFormulaCell( aFormulaAdr );
             pFormula->Interpret();
             bool bError = ( pFormula->GetErrCode() != 0 );
             // bError always corresponds with fF
commit 475461a6b5f26fe7f586ff122e2fa71316e316ef
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 21:17:35 2015 +0000

    coverity#1266494 Untrusted value as argument
    
    Change-Id: I220e582cd75199b5619c2ad7607392b078ab3956

diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index ba898c0..ab1731d 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -1201,7 +1201,15 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
                 {
                     sal_Int16 i, nRowCount = 0;
                     rSt.ReadInt16( nRowCount ).ReadInt16( i ).ReadInt16( i );
-                    if ( nRowCount )
+                    const size_t nMinRecordSize = 4;
+                    const size_t nMaxRecords = rSt.remainingSize() / nMinRecordSize;
+                    if (nRowCount > 0 && static_cast<size_t>(nRowCount) > nMaxRecords)
+                    {
+                        SAL_WARN("filter.ms", "Parsing error: " << nMaxRecords <<
+                                 " max possible entries, but " << nRowCount << " claimed, truncating");
+                        nRowCount = nMaxRecords;
+                    }
+                    if (nRowCount > 0)
                     {
                         sal_uInt32* pTableArry = new sal_uInt32[ nRowCount + 2 ];
                         pTableArry[ 0 ] = nTableProperties;
commit f159b9429990bcf133c53b20bb922afba402d06b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 21:10:40 2015 +0000

    coverity#1266492 Untrusted value as argument
    
    Change-Id: Id2a102fae99ecf938ac8f326e358785581d6f986

diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 1b09ed4..ba898c0 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -5266,7 +5266,11 @@ void PPTStyleTextPropReader::Init( SvStream& rIn, SdrPowerPointImport& rMan, con
                 }
                 else
                 {
-                    aCharPropSet.maString = aString.copy(nCharAnzRead, nCharCount);
+                    sal_uInt32 nStrLen = nCharCount;
+                    sal_uInt32 nMaxStrLen = aString.getLength();
+                    if (nCharAnzRead + nStrLen > nMaxStrLen)
+                        nStrLen = nMaxStrLen - nCharAnzRead;
+                    aCharPropSet.maString = aString.copy(nCharAnzRead, nStrLen);
                     aCharPropList.push_back( new PPTCharPropSet( aCharPropSet, nCurrentPara ) );
                     nCharAnzRead += nCharCount;
                     bEmptyParaPossible = false;
commit a046795194f0540b5752887b837bb15d43ddcdda
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 21:05:37 2015 +0000

    coverity#1266496 Untrusted loop bound
    
    Change-Id: Ibab7f84940f6eec75bc3ee914bac59a07689a80c

diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx
index cd56f63..edd1aa0 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -1266,6 +1266,15 @@ bool TIFFReader::ReadTIFF(SvStream & rTIFF, Graphic & rGraphic )
                 pTIFF->ReadUInt16( nNumTags );
                 nPos = pTIFF->Tell();
 
+                const size_t nMinRecordSize = 8;
+                const size_t nMaxRecords = pTIFF->remainingSize() / nMinRecordSize;
+                if (nNumTags > nMaxRecords)
+                {
+                    SAL_WARN("filter.tiff", "Parsing error: " << nMaxRecords <<
+                             " max possible entries, but " << nNumTags << " claimed, truncating");
+                    nNumTags = nMaxRecords;
+                }
+
                 // Schleife ueber Tags:
                 for( i = 0; i < nNumTags; i++ )
                 {
commit 2987f8d8d6bb005814660a1a10a5eebb74aef312
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 20:59:20 2015 +0000

    coverity#1266493 Use of untrusted scalar value
    
    Change-Id: Iba051da07f5ffafcab559fe03a4e93f21a2d4f8a

diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx
index 57de987..9155c27 100644
--- a/editeng/source/items/flditem.cxx
+++ b/editeng/source/items/flditem.cxx
@@ -567,7 +567,14 @@ static OUString read_unicode( SvPersistStream & rStm )
     rtl_uString *pStr = NULL;
     sal_uInt16 nL = 0;
     rStm.ReadUInt16( nL );
-    if ( nL )
+    const size_t nMaxRecords = rStm.remainingSize() / sizeof(sal_Unicode);
+    if (nL > nMaxRecords)
+    {
+        SAL_WARN("editeng", "Parsing error: " << nMaxRecords <<
+                 " max possible entries, but " << nL << " claimed, truncating");
+        nL = nMaxRecords;
+    }
+    if (nL)
     {
         pStr = rtl_uString_alloc(nL);
         //endian specific?, yipes!
commit 90ec1a60777ad9e78ad5fafd712cc98371782d7f
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 20:55:56 2015 +0000

    coverity#1266455 Explicit null dereferenced
    
    Change-Id: If772142b776d2365cbd2b7f0927975c2739c1316

diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index f5fabde..7fc1326 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -1701,6 +1701,8 @@ namespace accessibility
             {
                 break;
             }
+            if (!ree.pFieldItem)
+                continue;
             if(  (Segment.SegmentEnd > reeBegin && Segment.SegmentEnd <= reeEnd) ||
                   (Segment.SegmentStart >= reeBegin && Segment.SegmentStart < reeEnd)  )
             {
commit 54d8dbdcb4353c2a8ccd3b5955e626fcb330fa61
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 20:54:51 2015 +0000

    coverity#1266454 Explicit null dereferenced
    
    Change-Id: Ic8f13e9bd3755c9ccb59d173ac0a36be1d06a2f4

diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index 2f2c608..f5fabde 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -1663,9 +1663,11 @@ namespace accessibility
             {
                 break;
             }
-            if(  nIndex >= reeBegin && nIndex < reeEnd )
+            if (!ree.pFieldItem)
+                continue;
+            if (nIndex >= reeBegin && nIndex < reeEnd)
             {
-                if(ree.pFieldItem->GetField()->GetClassId() != text::textfield::Type::URL)
+                if (ree.pFieldItem->GetField()->GetClassId() != text::textfield::Type::URL)
                 {
                     nFoundFieldIndex = j;
                     break;
commit 383a5f2ef16853001353206b9c88edf13bb99ead
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 20:53:34 2015 +0000

    coverity#1266453 Explicit null dereferenced
    
    Change-Id: Ia03fdd3d854574ba19b028334e2397ad544fe20a

diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index b95a1b3..2f2c608 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -930,7 +930,7 @@ namespace accessibility
                 break;
             }
         }
-        if( nFoundFieldIndex >= 0  )
+        if (nFoundFieldIndex >= 0 && ree.pFieldItem)
         {
             // So we get a field, check its type now.
             nFieldType = ree.pFieldItem->GetField()->GetClassId() ;
commit cb8aa4522f3b38f6d0242c3877322582157035c0
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 20:51:45 2015 +0000

    coverity#1266481 Pointer to local outside scope
    
    Change-Id: I50884d73ffbbc8af743175e284860e937b196041

diff --git a/cui/source/inc/insdlg.hxx b/cui/source/inc/insdlg.hxx
index 5307a25..5807c24 100644
--- a/cui/source/inc/insdlg.hxx
+++ b/cui/source/inc/insdlg.hxx
@@ -41,7 +41,7 @@ class InsertObjectDialog_Impl : public ModalDialog
 {
 protected:
     com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > m_xObj;
-    const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& m_xStorage;
+    const com::sun::star::uno::Reference < com::sun::star::embed::XStorage > m_xStorage;
     comphelper::EmbeddedObjectContainer aCnt;
 
     InsertObjectDialog_Impl(vcl::Window * pParent, const OUString& rID,
commit ede590128f9ea770f5093449fdb748ab76758883
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 20:49:55 2015 +0000

    coverity#1266445 Explicit null dereferenced
    
    Change-Id: I2d62d6972d085fe818ec6767a0660afb010bece8

diff --git a/cppuhelper/source/component_context.cxx b/cppuhelper/source/component_context.cxx
index ed32764..ef684e9 100644
--- a/cppuhelper/source/component_context.cxx
+++ b/cppuhelper/source/component_context.cxx
@@ -741,12 +741,14 @@ void ComponentContext::disposing()
         &envs, &envCount, &rtl_allocateMemory, OUString("java").pData);
     assert(envCount >= 0);
     assert(envCount == 0 || envs != nullptr);
-    for (sal_Int32 i = 0; i != envCount; ++i) {
-        assert(envs[i] != nullptr);
-        assert(envs[i]->dispose != nullptr);
-        (*envs[i]->dispose)(envs[i]);
+    if (envs) {
+        for (sal_Int32 i = 0; i != envCount; ++i) {
+            assert(envs[i] != nullptr);
+            assert(envs[i]->dispose != nullptr);
+            (*envs[i]->dispose)(envs[i]);
+        }
+        rtl_freeMemory(envs);
     }
-    rtl_freeMemory(envs);
 }
 
 ComponentContext::ComponentContext(
commit 818c2021d13a24268e4bc3457141e76c008ef296
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 25 20:46:39 2015 +0000

    coverity#1266457 Identical code for different branches
    
    Change-Id: I809ad43ad4541e4dcd5c245b469d30605f9f0d27

diff --git a/basic/source/comp/buffer.cxx b/basic/source/comp/buffer.cxx
index bb61087..870f299 100644
--- a/basic/source/comp/buffer.cxx
+++ b/basic/source/comp/buffer.cxx
@@ -215,10 +215,7 @@ bool SbiBuffer::operator +=( sal_uInt32 n )
     {
         sal_uInt16 n1 = static_cast<sal_uInt16>( n & 0xFFFF );
         sal_uInt16 n2 = static_cast<sal_uInt16>( n >> 16 );
-        if ( operator +=( n1 ) && operator +=( n2 ) )
-        {
-            return true;
-        }
+        operator +=(n1) && operator +=(n2);
         return true;
     }
     else


More information about the Libreoffice-commits mailing list