Hi, Please find the latest report on new defect(s) introduced to LibreOffice found with Coverity Scan. 7 new defect(s) introduced to LibreOffice found with Coverity Scan. 3 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan. New defect(s) Reported-by: Coverity Scan Showing 7 of 7 defect(s) ** CID 1504597: Null pointer dereferences (NULL_RETURNS) /dbaccess/source/ui/dlg/dbadmin.cxx: 94 in dbaui::ODbAdminDialog::impl_selectDataSource(const com::sun::star::uno::Any &)() ________________________________________________________________________________________________________ *** CID 1504597: Null pointer dereferences (NULL_RETURNS) /dbaccess/source/ui/dlg/dbadmin.cxx: 94 in dbaui::ODbAdminDialog::impl_selectDataSource(const com::sun::star::uno::Any &)() 88 void ODbAdminDialog::impl_selectDataSource(const css::uno::Any& _aDataSourceName) 89 { 90 m_pImpl->setDataSourceOrName(_aDataSourceName); 91 Reference< XPropertySet > xDatasource = m_pImpl->getCurrentDataSource(); 92 impl_resetPages( xDatasource ); 93 >>> CID 1504597: Null pointer dereferences (NULL_RETURNS) >>> Dereferencing "this->dbaui::ODbAdminDialog::getOutputSet()->GetItem(5, true)", which is known to be "nullptr". 94 const DbuTypeCollectionItem& rCollectionItem = dynamic_cast<const DbuTypeCollectionItem&>(*getOutputSet()->GetItem(DSID_TYPECOLLECTION)); 95 ::dbaccess::ODsnTypeCollection* pCollection = rCollectionItem.getCollection(); 96 ::dbaccess::DATASOURCE_TYPE eType = pCollection->determineType(getDatasourceType(*getOutputSet())); 97 98 // and insert the new ones 99 switch ( eType ) ** CID 1504596: Null pointer dereferences (FORWARD_NULL) ________________________________________________________________________________________________________ *** CID 1504596: Null pointer dereferences (FORWARD_NULL) /dbaccess/source/ui/dlg/dbwizsetup.cxx: 139 in dbaui::ODbTypeWizDialogSetup::ODbTypeWizDialogSetup(weld::Window *, const SfxItemSet *, const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> &, const com::sun::star::uno::Any &)() 133 134 defaultButton(WizardButtonFlags::NEXT); 135 enableButtons(WizardButtonFlags::FINISH, true); 136 enableAutomaticNextButtonState(); 137 138 ::dbaccess::ODsnTypeCollection::TypeIterator aIter = m_pCollection->begin(); >>> CID 1504596: Null pointer dereferences (FORWARD_NULL) >>> Passing null pointer "this->m_pCollection" to "end", which dereferences it. 139 ::dbaccess::ODsnTypeCollection::TypeIterator aEnd = m_pCollection->end(); 140 for(PathId i = 1;aIter != aEnd;++aIter,++i) 141 { 142 const OUString& sURLPrefix = aIter.getURLPrefix(); 143 WizardPath aPath; 144 aPath.push_back(PAGE_DBSETUPWIZARD_INTRO); ** CID 1504595: Null pointer dereferences (NULL_RETURNS) /dbaccess/source/ui/dlg/dbwiz.cxx: 80 in dbaui::ODbTypeWizDialog::ODbTypeWizDialog(weld::Window *, const SfxItemSet *, const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> &, const com::sun::star::uno::Any &)() ________________________________________________________________________________________________________ *** CID 1504595: Null pointer dereferences (NULL_RETURNS) /dbaccess/source/ui/dlg/dbwiz.cxx: 80 in dbaui::ODbTypeWizDialog::ODbTypeWizDialog(weld::Window *, const SfxItemSet *, const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> &, const com::sun::star::uno::Any &)() 74 m_xPrevPage->set_help_id(HID_DBWIZ_PREVIOUS); 75 m_xNextPage->set_help_id(HID_DBWIZ_NEXT); 76 m_xCancel->set_help_id(HID_DBWIZ_CANCEL); 77 m_xFinish->set_help_id(HID_DBWIZ_FINISH); 78 // no local resources needed anymore 79 >>> CID 1504595: Null pointer dereferences (NULL_RETURNS) >>> Dereferencing "_pItems->GetItem(5, true)", which is known to be "nullptr". 80 const DbuTypeCollectionItem& rCollectionItem = dynamic_cast<const DbuTypeCollectionItem&>(*_pItems->GetItem(DSID_TYPECOLLECTION)); 81 m_pCollection = rCollectionItem.getCollection(); 82 83 ActivatePage(); 84 setTitleBase(DBA_RES(STR_DATABASE_TYPE_CHANGE)); 85 ** CID 1504594: (CONSTANT_EXPRESSION_RESULT) /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<short, short>(T1, T2)() /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<unsigned int, unsigned int>(T1, T2)() /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<unsigned long, unsigned long>(T1, T2)() /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<long, long>(T1, T2)() /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<signed char, signed char>(T1, T2)() /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<int, int>(T1, T2)() /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<unsigned short, unsigned short>(T1, T2)() ________________________________________________________________________________________________________ *** CID 1504594: (CONSTANT_EXPRESSION_RESULT) /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<short, short>(T1, T2)() 31 using std::cmp_greater_equal; 32 33 #else 34 35 template <typename T1, typename T2> constexpr bool cmp_equal(T1 value1, T2 value2) noexcept 36 { >>> CID 1504594: (CONSTANT_EXPRESSION_RESULT) >>> "1 /* std::is_signed_v<short> */ == 1 /* std::is_signed_v<short> */" is always true regardless of the values of its operands because those operands are identical. This occurs as the logical operand of "if". 37 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>) 38 { 39 return value1 == value2; 40 } 41 else if constexpr (std::is_signed_v<T1>) 42 { /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<unsigned int, unsigned int>(T1, T2)() 31 using std::cmp_greater_equal; 32 33 #else 34 35 template <typename T1, typename T2> constexpr bool cmp_equal(T1 value1, T2 value2) noexcept 36 { >>> CID 1504594: (CONSTANT_EXPRESSION_RESULT) >>> "0 /* std::is_signed_v<unsigned int> */ == 0 /* std::is_signed_v<unsigned int> */" is always true regardless of the values of its operands because those operands are identical. This occurs as the logical operand of "if". 37 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>) 38 { 39 return value1 == value2; 40 } 41 else if constexpr (std::is_signed_v<T1>) 42 { /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<unsigned long, unsigned long>(T1, T2)() 31 using std::cmp_greater_equal; 32 33 #else 34 35 template <typename T1, typename T2> constexpr bool cmp_equal(T1 value1, T2 value2) noexcept 36 { >>> CID 1504594: (CONSTANT_EXPRESSION_RESULT) >>> "0 /* std::is_signed_v<unsigned long> */ == 0 /* std::is_signed_v<unsigned long> */" is always true regardless of the values of its operands because those operands are identical. This occurs as the logical operand of "if". 37 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>) 38 { 39 return value1 == value2; 40 } 41 else if constexpr (std::is_signed_v<T1>) 42 { /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<long, long>(T1, T2)() 31 using std::cmp_greater_equal; 32 33 #else 34 35 template <typename T1, typename T2> constexpr bool cmp_equal(T1 value1, T2 value2) noexcept 36 { >>> CID 1504594: (CONSTANT_EXPRESSION_RESULT) >>> "1 /* std::is_signed_v<long> */ == 1 /* std::is_signed_v<long> */" is always true regardless of the values of its operands because those operands are identical. This occurs as the logical operand of "if". 37 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>) 38 { 39 return value1 == value2; 40 } 41 else if constexpr (std::is_signed_v<T1>) 42 { /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<signed char, signed char>(T1, T2)() 31 using std::cmp_greater_equal; 32 33 #else 34 35 template <typename T1, typename T2> constexpr bool cmp_equal(T1 value1, T2 value2) noexcept 36 { >>> CID 1504594: (CONSTANT_EXPRESSION_RESULT) >>> "1 /* std::is_signed_v<signed char> */ == 1 /* std::is_signed_v<signed char> */" is always true regardless of the values of its operands because those operands are identical. This occurs as the logical operand of "if". 37 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>) 38 { 39 return value1 == value2; 40 } 41 else if constexpr (std::is_signed_v<T1>) 42 { /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<int, int>(T1, T2)() 31 using std::cmp_greater_equal; 32 33 #else 34 35 template <typename T1, typename T2> constexpr bool cmp_equal(T1 value1, T2 value2) noexcept 36 { >>> CID 1504594: (CONSTANT_EXPRESSION_RESULT) >>> "1 /* std::is_signed_v<int> */ == 1 /* std::is_signed_v<int> */" is always true regardless of the values of its operands because those operands are identical. This occurs as the logical operand of "if". 37 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>) 38 { 39 return value1 == value2; 40 } 41 else if constexpr (std::is_signed_v<T1>) 42 { /include/o3tl/intcmp.hxx: 37 in o3tl::cmp_equal<unsigned short, unsigned short>(T1, T2)() 31 using std::cmp_greater_equal; 32 33 #else 34 35 template <typename T1, typename T2> constexpr bool cmp_equal(T1 value1, T2 value2) noexcept 36 { >>> CID 1504594: (CONSTANT_EXPRESSION_RESULT) >>> "0 /* std::is_signed_v<unsigned short> */ == 0 /* std::is_signed_v<unsigned short> */" is always true regardless of the values of its operands because those operands are identical. This occurs as the logical operand of "if". 37 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>) 38 { 39 return value1 == value2; 40 } 41 else if constexpr (std::is_signed_v<T1>) 42 { ** CID 1504593: Null pointer dereferences (NULL_RETURNS) /dbaccess/source/ui/dlg/dbadmin.cxx: 180 in dbaui::ODbAdminDialog::impl_resetPages(const com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> &)() ________________________________________________________________________________________________________ *** CID 1504593: Null pointer dereferences (NULL_RETURNS) /dbaccess/source/ui/dlg/dbadmin.cxx: 180 in dbaui::ODbAdminDialog::impl_resetPages(const com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> &)() 174 175 // reset the example set 176 m_xExampleSet.reset(new SfxItemSet(*GetInputSetImpl())); 177 178 // special case: MySQL Native does not have the generic "advanced" page 179 >>> CID 1504593: Null pointer dereferences (NULL_RETURNS) >>> Dereferencing "this->dbaui::ODbAdminDialog::getOutputSet()->GetItem(5, true)", which is known to be "nullptr". 180 const DbuTypeCollectionItem& rCollectionItem = dynamic_cast<const DbuTypeCollectionItem&>(*getOutputSet()->GetItem(DSID_TYPECOLLECTION)); 181 ::dbaccess::ODsnTypeCollection* pCollection = rCollectionItem.getCollection(); 182 if ( pCollection->determineType(getDatasourceType( *m_xExampleSet )) == ::dbaccess::DST_MYSQL_NATIVE ) 183 { 184 OString sMySqlNative("mysqlnative"); 185 AddTabPage(sMySqlNative, DBA_RES(STR_PAGETITLE_CONNECTION), ODriversSettings::CreateMySQLNATIVE); ** CID 1504592: Performance inefficiencies (PASS_BY_VALUE) /sot/source/sdstor/stgdir.cxx: 56 in StgDirEntry::StgDirEntry(StgEntry)() ________________________________________________________________________________________________________ *** CID 1504592: Performance inefficiencies (PASS_BY_VALUE) /sot/source/sdstor/stgdir.cxx: 56 in StgDirEntry::StgDirEntry(StgEntry)() 50 { 51 *pbOk = m_aEntry.Load( pBuffer, nBufferLen, nUnderlyingStreamSize ); 52 53 InitMembers(); 54 } 55 >>> CID 1504592: Performance inefficiencies (PASS_BY_VALUE) >>> Passing parameter r of type "StgEntry" (size 136 bytes) by value. 56 StgDirEntry::StgDirEntry( StgEntry r ) : m_aEntry(std::move( r )) 57 { 58 InitMembers(); 59 } 60 61 // Helper for all ctors ** CID 1504591: Uninitialized members (UNINIT_CTOR) /vcl/jsdialog/jsdialogbuilder.cxx: 1790 in JSPopover::JSPopover(JSDialogSender *, DockingWindow *, SalInstanceBuilder *, bool)() ________________________________________________________________________________________________________ *** CID 1504591: Uninitialized members (UNINIT_CTOR) /vcl/jsdialog/jsdialogbuilder.cxx: 1790 in JSPopover::JSPopover(JSDialogSender *, DockingWindow *, SalInstanceBuilder *, bool)() 1784 } 1785 1786 JSPopover::JSPopover(JSDialogSender* pSender, DockingWindow* pDockingWindow, 1787 SalInstanceBuilder* pBuilder, bool bTakeOwnership) 1788 : JSWidget<SalInstancePopover, DockingWindow>(pSender, pDockingWindow, pBuilder, bTakeOwnership) 1789 { >>> CID 1504591: Uninitialized members (UNINIT_CTOR) >>> Non-static class member "mnWindowId" is not initialized in this constructor nor in any functions that it calls. 1790 } 1791 1792 void JSPopover::popup_at_rect(weld::Widget* pParent, const tools::Rectangle& rRect, 1793 weld::Placement ePlace) 1794 { 1795 SalInstancePopover::popup_at_rect(pParent, rRect, ePlace); ________________________________________________________________________________________________________ To view the defects in Coverity Scan visit, https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50ypSs1kiFPuCn2xFdlMIFBirii0zZ9j2-2F9F2XPBcBm2BNgi9duPy3v-2FzgFDd2LJ-2BDKI-3Drnvl_OTq2XUZbbipYjyLSo6GRo-2FpVxQ9OzkDINu9UTS-2FQhSdO0F0jQniitrGlNxDIzPJihTSrsXgqdkazQ5f9BlpqTOWPocpSV-2BZCZynpdBoSO-2BABuuFslKL4gafXxE2nBx74F05nDZv78-2BFGT0h8E3Xy4eMrIlo9rF81I2mbFssVe9j9vwYU9Oec01kR5DQ6WPZNFa1ZorfvEaIUoe5UhXBkENYmOIhSFVh7QkG0DxLtWTg-3D