[Libreoffice-commits] core.git: 8 commits - chart2/source comphelper/source connectivity/source offapi/com ucb/source unoxml/source vcl/source

Caolán McNamara caolanm at redhat.com
Fri Oct 10 10:15:10 PDT 2014


 chart2/source/controller/dialogs/res_Trendline.cxx |    4 +--
 comphelper/source/property/opropertybag.cxx        |    2 -
 comphelper/source/property/propertybag.cxx         |   19 ++++++++++++---
 connectivity/source/drivers/dbase/DTable.cxx       |   15 ++++++++++--
 connectivity/source/inc/resource/dbase_res.hrc     |    1 
 connectivity/source/resource/conn_shared_res.src   |    6 ++++
 offapi/com/sun/star/rdf/XDocumentRepository.idl    |    1 
 ucb/source/ucp/gio/gio_content.cxx                 |   26 +++++++++++++++++++++
 ucb/source/ucp/gio/gio_content.hxx                 |    3 ++
 ucb/source/ucp/gio/gio_inputstream.cxx             |    4 +--
 ucb/source/ucp/gio/gio_outputstream.cxx            |    4 +--
 ucb/source/ucp/gio/gio_seekable.cxx                |    6 ++--
 unoxml/source/rdf/librdf_repository.cxx            |    2 +
 vcl/source/filter/jpeg/Exif.cxx                    |    2 -
 vcl/source/gdi/cvtsvm.cxx                          |    3 ++
 15 files changed, 81 insertions(+), 17 deletions(-)

New commits:
commit ccaaa544350156ed4cd113634ceb66ad8cc5af23
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 17:24:03 2014 +0100

    coverity#707458 Uncaught exception
    
    Change-Id: Ia446cc0b8b26bb158b36ca64cbf45bf172f37bdf

diff --git a/offapi/com/sun/star/rdf/XDocumentRepository.idl b/offapi/com/sun/star/rdf/XDocumentRepository.idl
index 039e376..ff1ee9b 100644
--- a/offapi/com/sun/star/rdf/XDocumentRepository.idl
+++ b/offapi/com/sun/star/rdf/XDocumentRepository.idl
@@ -169,6 +169,7 @@ interface XDocumentRepository : XRepository
     com::sun::star::beans::Pair< sequence<Statement>, boolean >
             getStatementRDFa([in] XMetadatable Element)
         raises( com::sun::star::lang::IllegalArgumentException,
+                com::sun::star::container::NoSuchElementException,
                 RepositoryException );
 
     /** gets matching RDFa statements from the repository.
diff --git a/unoxml/source/rdf/librdf_repository.cxx b/unoxml/source/rdf/librdf_repository.cxx
index 2cdcdaa..dd0dec6 100644
--- a/unoxml/source/rdf/librdf_repository.cxx
+++ b/unoxml/source/rdf/librdf_repository.cxx
@@ -359,6 +359,7 @@ public:
     virtual beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > SAL_CALL
         getStatementRDFa(uno::Reference< rdf::XMetadatable > const& i_xElement)
         throw (uno::RuntimeException, lang::IllegalArgumentException,
+            container::NoSuchElementException,
             rdf::RepositoryException, std::exception) SAL_OVERRIDE;
     virtual uno::Reference< container::XEnumeration > SAL_CALL
         getStatementsRDFa(
@@ -1646,6 +1647,7 @@ beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > SAL_CALL
 librdf_Repository::getStatementRDFa(
     const uno::Reference< rdf::XMetadatable > & i_xElement)
 throw (uno::RuntimeException, lang::IllegalArgumentException,
+    container::NoSuchElementException,
     rdf::RepositoryException, std::exception)
 {
     if (!i_xElement.is()) {
commit cd86543fd4b81b03762e24d81be6c7671d5188a5
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 17:12:35 2014 +0100

    coverity#1242714 Untrusted value as argument
    
    Change-Id: I1524722feae3ad9f67627cb34dec83632edefec4

diff --git a/vcl/source/filter/jpeg/Exif.cxx b/vcl/source/filter/jpeg/Exif.cxx
index 01f0592..1a0f05b 100644
--- a/vcl/source/filter/jpeg/Exif.cxx
+++ b/vcl/source/filter/jpeg/Exif.cxx
@@ -124,7 +124,7 @@ bool Exif::processJpeg(SvStream& rStream, bool bSetValue)
 
         rStream.ReadUInt16( aLength );
 
-        if (aLength < 8)
+        if (aLength < 8 || aLength > rStream.remainingSize())
         {
             return false;
         }
commit 6ec9b3a6301a73d5a5df038a39e7319e9ac43907
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 16:58:14 2014 +0100

    coverity#1244944 experiment to silence Untrusted loop bound
    
    there's a warning for nPolygonCount but none for nPointCount. I wonder
    what happens if I tweak the code like this
    
    Change-Id: I7e1b02c4790f6b2d1c59e38de1a6a0b17a0485b1

diff --git a/vcl/source/gdi/cvtsvm.cxx b/vcl/source/gdi/cvtsvm.cxx
index 2667f23..38a9b52 100644
--- a/vcl/source/gdi/cvtsvm.cxx
+++ b/vcl/source/gdi/cvtsvm.cxx
@@ -397,6 +397,9 @@ void ImplReadExtendedPolyPolygonAction(SvStream& rIStm, tools::PolyPolygon& rPol
     sal_uInt16 nPolygonCount(0);
     rIStm.ReadUInt16( nPolygonCount );
 
+    if (!nPolygonCount)
+        return;
+
     for(sal_uInt16 a(0); a < nPolygonCount; a++)
     {
         sal_uInt16 nPointCount(0);
commit d1217a95ef16e662586b88c9f3c9a447eba41e46
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 16:37:37 2014 +0100

    coverity#1223085 Unchecked return value
    
    there were three of these, not just one
    
    i.e. see also
    
    commit 276a051ef5dc144a202633779259a4ecd43c81a8
    Date:   Sun Oct 5 13:05:04 2014 -0500
        coverity#1223085 Unchecked return value
    
    Change-Id: I07ee033ae31a346a08f68a6edfa480505fe6c11a

diff --git a/chart2/source/controller/dialogs/res_Trendline.cxx b/chart2/source/controller/dialogs/res_Trendline.cxx
index 77e972b..8c48e2a 100644
--- a/chart2/source/controller/dialogs/res_Trendline.cxx
+++ b/chart2/source/controller/dialogs/res_Trendline.cxx
@@ -265,11 +265,11 @@ bool TrendlineResources::FillItemSet(SfxItemSet* rOutAttrs) const
 
     sal_uInt32 nIndex = 0;
     double aValue = 0.0;
-    m_pNumFormatter->IsNumberFormat(m_pFmtFld_ExtrapolateForward->GetText(),nIndex,aValue);
+    (void)m_pNumFormatter->IsNumberFormat(m_pFmtFld_ExtrapolateForward->GetText(),nIndex,aValue);
     rOutAttrs->Put(SvxDoubleItem( aValue, SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD ) );
 
     aValue = 0.0;
-    m_pNumFormatter->IsNumberFormat(m_pFmtFld_ExtrapolateBackward->GetText(),nIndex,aValue);
+    (void)m_pNumFormatter->IsNumberFormat(m_pFmtFld_ExtrapolateBackward->GetText(),nIndex,aValue);
     rOutAttrs->Put(SvxDoubleItem( aValue, SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD ) );
 
     if( m_pCB_SetIntercept->GetState() != TRISTATE_INDET )
commit 430e19e4f9c24985f855d5e607aaef63d110ddeb
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 16:13:15 2014 +0100

    coverity#1241375 Uncaught exception
    
    and
    
    coverity#1241356 Uncaught exception
    coverity#1241415 Uncaught exception
    coverity#1241449 Uncaught exception
    coverity#1241146 Uncaught exception
    coverity#1241169 Uncaught exception
    coverity#1241408 Uncaught exception
    coverity#1241452 Uncaught exception
    coverity#1241443 Uncaught exception
    coverity#1241236 Uncaught exception
    coverity#1241157 Uncaught exception
    coverity#1241283 Uncaught exception
    coverity#1241409 Uncaught exception
    coverity#1241229 Uncaught exception
    coverity#1241387 Uncaught exception
    coverity#1241050 Uncaught exception
    coverity#1241371 Uncaught exception
    coverity#1241048 Uncaught exception
    coverity#1241112 Uncaught exception
    coverity#1241351 Uncaught exception
    coverity#1241370 Uncaught exception
    coverity#1241329 Uncaught exception
    coverity#1241162 Uncaught exception
    coverity#1241103 Uncaught exception
    coverity#1241342 Uncaught exception
    coverity#1241271 Uncaught exception
    coverity#1241219 Uncaught exception
    coverity#1241245 Uncaught exception
    
    Change-Id: I3418bb54b5c385110201a99a339eba0d0d3048f5

diff --git a/ucb/source/ucp/gio/gio_content.cxx b/ucb/source/ucp/gio/gio_content.cxx
index 2f71f03..96dbd72 100644
--- a/ucb/source/ucp/gio/gio_content.cxx
+++ b/ucb/source/ucp/gio/gio_content.cxx
@@ -33,6 +33,7 @@
 #include <com/sun/star/io/XActiveDataSink.hpp>
 #include <com/sun/star/io/XOutputStream.hpp>
 #include <com/sun/star/lang/IllegalAccessException.hpp>
+#include <com/sun/star/lang/WrappedTargetException.hpp>
 #include <com/sun/star/ucb/ContentInfoAttribute.hpp>
 #include <com/sun/star/ucb/InsertCommandArgument.hpp>
 #include <com/sun/star/ucb/InteractiveBadTransferURLException.hpp>
@@ -58,6 +59,7 @@
 #include <com/sun/star/ucb/XContentCreator.hpp>
 
 #include <comphelper/processfactory.hxx>
+#include <cppuhelper/exc_hlp.hxx>
 #include <ucbhelper/contentidentifier.hxx>
 #include <ucbhelper/propertyvalueset.hxx>
 #include <ucbhelper/interactionrequest.hxx>
@@ -283,6 +285,30 @@ uno::Any convertToException(GError *pError, const uno::Reference< uno::XInterfac
     return aRet;
 }
 
+void convertToIOException(GError *pError, const uno::Reference< uno::XInterface >& rContext)
+    throw( io::IOException, uno::RuntimeException, std::exception )
+{
+    try
+    {
+        convertToException(pError, rContext);
+    }
+    catch (const io::IOException&)
+    {
+        throw;
+    }
+    catch (const uno::RuntimeException&)
+    {
+        throw;
+    }
+    catch (const uno::Exception& e)
+    {
+        css::uno::Any a(cppu::getCaughtException());
+        throw css::lang::WrappedTargetException(
+            "wrapped Exception " + e.Message,
+            css::uno::Reference<css::uno::XInterface>(), a);
+    }
+}
+
 uno::Any Content::mapGIOError( GError *pError )
 {
     if (!pError)
diff --git a/ucb/source/ucp/gio/gio_content.hxx b/ucb/source/ucp/gio/gio_content.hxx
index fd40d20..ac42a66 100644
--- a/ucb/source/ucp/gio/gio_content.hxx
+++ b/ucb/source/ucp/gio/gio_content.hxx
@@ -56,6 +56,9 @@ namespace gio
 
 com::sun::star::uno::Any convertToException(GError *pError,
     const com::sun::star::uno::Reference< com::sun::star::uno::XInterface >& rContext, bool bThrow=true);
+void convertToIOException(GError *pError,
+    const com::sun::star::uno::Reference< com::sun::star::uno::XInterface >& rContext)
+        throw (css::io::IOException, css::uno::RuntimeException, std::exception);
 
 class ContentProvider;
 class Content : public ::ucbhelper::ContentImplHelper, public com::sun::star::ucb::XContentCreator
diff --git a/ucb/source/ucp/gio/gio_inputstream.cxx b/ucb/source/ucp/gio/gio_inputstream.cxx
index 49b6b38..4a14f22 100644
--- a/ucb/source/ucp/gio/gio_inputstream.cxx
+++ b/ucb/source/ucp/gio/gio_inputstream.cxx
@@ -66,7 +66,7 @@ void SAL_CALL InputStream::skipBytes( sal_Int32 nBytesToSkip )
 
     GError *pError=NULL;
     if (!g_seekable_seek(G_SEEKABLE(mpStream), nBytesToSkip, G_SEEK_CUR, NULL, &pError))
-        convertToException(pError, static_cast< cppu::OWeakObject * >(this));
+        convertToIOException(pError, static_cast< cppu::OWeakObject * >(this));
 }
 
 sal_Int32 SAL_CALL InputStream::readBytes( uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead )
@@ -88,7 +88,7 @@ sal_Int32 SAL_CALL InputStream::readBytes( uno::Sequence< sal_Int8 >& aData, sal
     gsize nBytesRead = 0;
     GError *pError=NULL;
     if (!g_input_stream_read_all(G_INPUT_STREAM(mpStream), aData.getArray(), nBytesToRead, &nBytesRead, NULL, &pError))
-        convertToException(pError, static_cast< cppu::OWeakObject * >(this));
+        convertToIOException(pError, static_cast< cppu::OWeakObject * >(this));
     aData.realloc(nBytesRead);
     return nBytesRead;
 }
diff --git a/ucb/source/ucp/gio/gio_outputstream.cxx b/ucb/source/ucp/gio/gio_outputstream.cxx
index b4e4c12..d8cf60f 100644
--- a/ucb/source/ucp/gio/gio_outputstream.cxx
+++ b/ucb/source/ucp/gio/gio_outputstream.cxx
@@ -49,7 +49,7 @@ void SAL_CALL OutputStream::writeBytes( const com::sun::star::uno::Sequence< sal
 
     GError *pError=NULL;
     if (!g_output_stream_write_all(G_OUTPUT_STREAM(mpStream), rData.getConstArray(), rData.getLength(), NULL, NULL, &pError))
-        convertToException(pError, static_cast< cppu::OWeakObject * >(this));
+        convertToIOException(pError, static_cast< cppu::OWeakObject * >(this));
 }
 
 void SAL_CALL OutputStream::flush( void )
@@ -61,7 +61,7 @@ void SAL_CALL OutputStream::flush( void )
 
     GError *pError=NULL;
     if (!g_output_stream_flush(G_OUTPUT_STREAM(mpStream), NULL, &pError))
-        convertToException(pError, static_cast< cppu::OWeakObject * >(this));
+        convertToIOException(pError, static_cast< cppu::OWeakObject * >(this));
 }
 
 void SAL_CALL OutputStream::closeOutput( void )
diff --git a/ucb/source/ucp/gio/gio_seekable.cxx b/ucb/source/ucp/gio/gio_seekable.cxx
index ba338c0..940375d 100644
--- a/ucb/source/ucp/gio/gio_seekable.cxx
+++ b/ucb/source/ucp/gio/gio_seekable.cxx
@@ -51,7 +51,7 @@ void SAL_CALL Seekable::truncate( void )
 
     GError *pError=NULL;
     if (!g_seekable_truncate(mpStream, 0, NULL, &pError))
-        convertToException(pError, static_cast< cppu::OWeakObject * >(this));
+        convertToIOException(pError, static_cast< cppu::OWeakObject * >(this));
 }
 
 void SAL_CALL Seekable::seek( sal_Int64 location )
@@ -66,7 +66,7 @@ void SAL_CALL Seekable::seek( sal_Int64 location )
 
     GError *pError=NULL;
     if (!g_seekable_seek(mpStream, location, G_SEEK_SET, NULL, &pError))
-        convertToException(pError, static_cast< cppu::OWeakObject * >(this));
+        convertToIOException(pError, static_cast< cppu::OWeakObject * >(this));
 }
 
 sal_Int64 SAL_CALL Seekable::getPosition() throw( io::IOException, uno::RuntimeException, std::exception )
@@ -104,7 +104,7 @@ sal_Int64 SAL_CALL Seekable::getLength() throw( io::IOException, uno::RuntimeExc
         GError *pError=NULL;
         sal_Int64 nCurr = getPosition();
         if (!g_seekable_seek(mpStream, 0, G_SEEK_END, NULL, &pError))
-            convertToException(pError, static_cast< cppu::OWeakObject * >(this));
+            convertToIOException(pError, static_cast< cppu::OWeakObject * >(this));
         nSize = getPosition();
         seek(nCurr);
         bOk = true;
commit f5c8a636a644d4b74450de29f11399f3f69f55a7
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 15:53:35 2014 +0100

    coverity#706302 Uncaught exception
    
    Change-Id: I082b7682124053948733efc2dbe5df6196acaa5f

diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx
index 895f0de8..a98a54d 100644
--- a/connectivity/source/drivers/dbase/DTable.cxx
+++ b/connectivity/source/drivers/dbase/DTable.cxx
@@ -2256,8 +2256,19 @@ void ODbaseTable::alterColumn(sal_Int32 index,
         // now drop the old one
         if( DropImpl() ) // we don't want to delete the memo columns too
         {
-            // rename the new one to the old one
-            pNewTable->renameImpl(m_Name);
+            try
+            {
+                // rename the new one to the old one
+                pNewTable->renameImpl(m_Name);
+            }
+            catch(const css::container::ElementExistException&)
+            {
+                const OUString sError( getConnection()->getResources().getResourceStringWithSubstitution(
+                        STR_COULD_NOT_DELETE_FILE,
+                        "$filename$", m_Name
+                     ) );
+                ::dbtools::throwGenericSQLException( sError, *this );
+            }
             // release the temp file
             pNewTable = NULL;
             ::comphelper::disposeComponent(xHoldTable);
diff --git a/connectivity/source/inc/resource/dbase_res.hrc b/connectivity/source/inc/resource/dbase_res.hrc
index 54f0232..d32caab 100644
--- a/connectivity/source/inc/resource/dbase_res.hrc
+++ b/connectivity/source/inc/resource/dbase_res.hrc
@@ -46,6 +46,7 @@
 #define STR_INVALID_COLUMN_VALUE                ( STR_DBASE_BASE +   18 )
 #define STR_TABLE_NOT_DROP                      ( STR_DBASE_BASE +   19 )
 #define STR_COULD_NOT_CREATE_INDEX_KEYSIZE      ( STR_DBASE_BASE +   20 )
+#define STR_COULD_NOT_RENAME_FILE               ( STR_DBASE_BASE +   21 )
 
 #endif // CONNECTIVITY_RESOURCE_DBASE_HRC
 
diff --git a/connectivity/source/resource/conn_shared_res.src b/connectivity/source/resource/conn_shared_res.src
index 1d39e10..ad56436 100644
--- a/connectivity/source/resource/conn_shared_res.src
+++ b/connectivity/source/resource/conn_shared_res.src
@@ -398,11 +398,17 @@ String STR_SQL_NAME_ERROR
 {
     Text [ en-US ] = "The name '$name$' doesn't match SQL naming constraints.";
 };
+
 String STR_COULD_NOT_DELETE_FILE
 {
     Text [ en-US ] = "The file $filename$ could not be deleted.";
 };
 
+String STR_COULD_NOT_RENAME_FILE
+{
+    Text [ en-US ] = "The file could not be renamed to $filename$.";
+};
+
 String STR_INVALID_COLUMN_TYPE
 {
     Text [ en-US ] = "Invalid column type for column '$columnname$'.";
commit 9b92b4239e8d8d9657a0ba22959c7b0a99306870
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 15:47:34 2014 +0100

    coverity#706285 Uncaught exception
    
    Change-Id: I6d7227a0614042f7a65520fc79b31afa3d7ca744

diff --git a/comphelper/source/property/propertybag.cxx b/comphelper/source/property/propertybag.cxx
index 78e6a65..a822fdd 100644
--- a/comphelper/source/property/propertybag.cxx
+++ b/comphelper/source/property/propertybag.cxx
@@ -21,6 +21,7 @@
 
 #include <com/sun/star/beans/IllegalTypeException.hpp>
 #include <com/sun/star/beans/PropertyExistException.hpp>
+#include <com/sun/star/container/ElementExistException.hpp>
 #include <com/sun/star/lang/IllegalArgumentException.hpp>
 #include <com/sun/star/beans/PropertyAttribute.hpp>
 #include <com/sun/star/beans/NotRemoveableException.hpp>
@@ -37,6 +38,7 @@ namespace comphelper
     using ::com::sun::star::uno::TypeClass_VOID;
     using ::com::sun::star::beans::IllegalTypeException;
     using ::com::sun::star::beans::PropertyExistException;
+    using ::com::sun::star::container::ElementExistException;
     using ::com::sun::star::lang::IllegalArgumentException;
     using ::com::sun::star::beans::Property;
     using ::com::sun::star::beans::NotRemoveableException;
@@ -88,15 +90,24 @@ namespace comphelper
                       );
         }
 
-        void    lcl_checkNameAndHandle( const OUString& _name, const sal_Int32 _handle, const PropertyBag& _container )
+        void    lcl_checkNameAndHandle_PropertyExistException( const OUString& _name, const sal_Int32 _handle, const PropertyBag& _container )
         {
             if ( _container.hasPropertyByName( _name ) || _container.hasPropertyByHandle( _handle ) )
                 throw PropertyExistException(
                     "Property name or handle already used.",
-                    // TODO: resource
                     NULL );
 
         }
+
+        void    lcl_checkNameAndHandle_ElementExistException( const OUString& _name, const sal_Int32 _handle, const PropertyBag& _container )
+        {
+            if ( _container.hasPropertyByName( _name ) || _container.hasPropertyByHandle( _handle ) )
+                throw ElementExistException(
+                    "Property name or handle already used.",
+                    NULL );
+
+        }
+
     }
 
 
@@ -112,7 +123,7 @@ namespace comphelper
 
         // check name/handle sanity
         lcl_checkForEmptyName( m_pImpl->m_bAllowEmptyPropertyName, _rName );
-        lcl_checkNameAndHandle( _rName, _nHandle, *this );
+        lcl_checkNameAndHandle_ElementExistException( _rName, _nHandle, *this );
 
         // register the property
         OSL_ENSURE( _nAttributes & PropertyAttribute::MAYBEVOID, "PropertyBag::addVoidProperty: this is for default-void properties only!" );
@@ -135,7 +146,7 @@ namespace comphelper
 
         // check name/handle sanity
         lcl_checkForEmptyName( m_pImpl->m_bAllowEmptyPropertyName, _rName );
-        lcl_checkNameAndHandle( _rName, _nHandle, *this );
+        lcl_checkNameAndHandle_PropertyExistException( _rName, _nHandle, *this );
 
         // register the property
         registerPropertyNoMember( _rName, _nHandle, _nAttributes, aPropertyType,
commit 0e06dbd3a0ab36dac81227c0cc16ec8c303f0585
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Oct 10 15:38:27 2014 +0100

    coverity#706284 Uncaught exception
    
    Change-Id: I748d34fd7f56b1c9c739f15fbb596932484195a4

diff --git a/comphelper/source/property/opropertybag.cxx b/comphelper/source/property/opropertybag.cxx
index b3f3b27..1ef446d 100644
--- a/comphelper/source/property/opropertybag.cxx
+++ b/comphelper/source/property/opropertybag.cxx
@@ -248,7 +248,7 @@ namespace comphelper
         if  (   !m_aAllowedTypes.empty()
             &&  m_aAllowedTypes.find( aProperty.Type ) == m_aAllowedTypes.end()
             )
-            throw IllegalTypeException( OUString(), *this );
+            throw IllegalArgumentException( OUString(), *this, 1 );
 
         m_aDynamicProperties.addVoidProperty( aProperty.Name, aProperty.Type, findFreeHandle(), aProperty.Attributes );
 


More information about the Libreoffice-commits mailing list