From d92d9e0d94fd8e9908eeae3717a7c835c85e80ae Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Wed, 15 Mar 2017 11:50:25 +0100 Subject: Avoid unnecessary, wrong downcast ...causing UBSan failure with the new lotuswordpro/qa/cppunit/data/fail/stack-1.lwp from e68faf7d42179c4f9b90b514f5b3bfcb7f1e9cb0 "ofz#866 crash in LwpFormulaInfo::ReadArguments": > Testing file:///.../lotuswordpro/qa/cppunit/data/fail/stack-1.lwp: > lotuswordpro/source/filter/bencont.cxx:132:11: runtime error: downcast of address 0x60800043af28 which does not point to an object of type 'OpenStormBento::CBenObject' > 0x60800043af28: note: object is of type 'OpenStormBento::CUtListElmt' > 89 7f 00 00 70 94 cc 7f 89 7f 00 00 80 ae 2d 00 70 60 00 00 80 ae 2d 00 70 60 00 00 30 95 cc 7f > ^~~~~~~~~~~~~~~~~~~~~~~ > vptr for 'OpenStormBento::CUtListElmt' > #0 0x7f897ed108f7 in OpenStormBento::LtcBenContainer::RegisterPropertyName(char const*, OpenStormBento::CBenPropertyName**) lotuswordpro/source/filter/bencont.cxx:132:11 > #1 0x7f897ed11df7 in OpenStormBento::LtcBenContainer::FindNextValueStreamWithPropertyName(char const*) lotuswordpro/source/filter/bencont.cxx:227:5 > #2 0x7f897ed12492 in OpenStormBento::LtcBenContainer::FindValueStreamWithPropertyName(char const*) lotuswordpro/source/filter/bencont.cxx:256:12 > #3 0x7f897ef1fc19 in Decompress(SvStream*, SvStream*&) lotuswordpro/source/filter/lwpfilter.cxx:122:72 > #4 0x7f897ef20deb in GetLwpSvStream(SvStream*, LwpSvStream*&) lotuswordpro/source/filter/lwpfilter.cxx:164:14 > #5 0x7f897ef21836 in ReadWordproFile(SvStream&, com::sun::star::uno::Reference&) lotuswordpro/source/filter/lwpfilter.cxx:195:13 > #6 0x7f897ed290cd in LotusWordProImportFilter::importImpl(com::sun::star::uno::Sequence const&) lotuswordpro/source/filter/LotusWordProImportFilter.cxx:76:14 > #7 0x7f897ed296fd in LotusWordProImportFilter::filter(com::sun::star::uno::Sequence const&) lotuswordpro/source/filter/LotusWordProImportFilter.cxx:88:12 > #8 0x7f898eb6db9a in (anonymous namespace)::LotusWordProTest::load(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int) lotuswordpro/qa/cppunit/test_lotuswordpro.cxx:59:27 > #9 0x7f898e3c7901 in test::FiltersTest::recursiveScan(test::filterStatus, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int, bool) unotest/source/cpp/filters-test.cxx:130:20 > #10 0x7f898e3c9fd5 in test::FiltersTest::testDir(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int, bool) unotest/source/cpp/filters-test.cxx:158:5 > #11 0x7f898eb6ee58 in (anonymous namespace)::LotusWordProTest::test() lotuswordpro/qa/cppunit/test_lotuswordpro.cxx:64:9 > #12 0x7f898eb7006b in CppUnit::TestCaller<(anonymous namespace)::LotusWordProTest>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:166:6 > #13 0x7f89d2d74d8b in CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 > #14 0x7f89b944f99f in (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:36:14 > #15 0x7f89d2d333ce in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 > #16 0x7f89c2f440cf in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12 > #17 0x7f89d2d333ce in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 > #18 0x7f89c6bff2c4 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16 > #19 0x7f89d2d333ce in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 > #20 0x7f89d2cb1350 in CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 > #21 0x7f89d2d333ce in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 > #22 0x7f89d2d2fe70 in CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:77:18 > #23 0x7f89d2def0f5 in CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string, std::allocator > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:181:28 > #24 0x7f89d2d72fa4 in CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13 > #25 0x7f89d2d777a7 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 > #26 0x7f89d2d76819 in CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 > #27 0x7f89d2d777a7 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 > #28 0x7f89d2d76819 in CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 > #29 0x7f89d2e2d5c9 in CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 > #30 0x7f89d2ded40d in CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:148:9 > #31 0x7f89d2e2e89b in CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string, std::allocator > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 > #32 0x53043c in (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:305:20 > #33 0x52c089 in sal_main() sal/cppunittester/cppunittester.cxx:455:20 > #34 0x52a742 in main sal/cppunittester/cppunittester.cxx:362:1 > #35 0x7f89d0fb8400 in __libc_start_main /usr/src/debug/glibc-2.24-33-ge9e69e4/csu/../csu/libc-start.c:289 > #36 0x437d49 in _start (workdir/LinkTarget/Executable/cppunittester+0x437d49) Change-Id: I556c3ab6fcc7a08fceac5a7195f81d570fc2a025 --- lotuswordpro/source/filter/bencont.cxx | 2 +- lotuswordpro/source/filter/benname.cxx | 2 +- lotuswordpro/source/filter/bento.hxx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'lotuswordpro') diff --git a/lotuswordpro/source/filter/bencont.cxx b/lotuswordpro/source/filter/bencont.cxx index 506b2ed06d72..2b919cd6190a 100644 --- a/lotuswordpro/source/filter/bencont.cxx +++ b/lotuswordpro/source/filter/bencont.cxx @@ -129,7 +129,7 @@ LtcBenContainer::RegisterPropertyName(const char * sPropertyName, return; *ppPropertyName = new CBenPropertyName(this, cNextAvailObjectID, - static_cast(pPrevObject), sPropertyName, pPrevNamedObjectListElmt); + pPrevObject, sPropertyName, pPrevNamedObjectListElmt); ++cNextAvailObjectID; } } diff --git a/lotuswordpro/source/filter/benname.cxx b/lotuswordpro/source/filter/benname.cxx index 32855fbd73a3..93463f51c77e 100644 --- a/lotuswordpro/source/filter/benname.cxx +++ b/lotuswordpro/source/filter/benname.cxx @@ -59,7 +59,7 @@ namespace OpenStormBento { // changed to remove warning CBenNamedObject::CBenNamedObject(pLtcBenContainer pContainer, - BenObjectID ObjectID, pCBenObject pPrevObject, const char * sName, + BenObjectID ObjectID, pCUtListElmt pPrevObject, const char * sName, pCUtListElmt pPrevNamedObjectListElmt) : CBenObject(pContainer, ObjectID, pPrevObject) , csName(sName) diff --git a/lotuswordpro/source/filter/bento.hxx b/lotuswordpro/source/filter/bento.hxx index af08bcb1a7ee..a5137904d514 100644 --- a/lotuswordpro/source/filter/bento.hxx +++ b/lotuswordpro/source/filter/bento.hxx @@ -344,7 +344,7 @@ public: // Methods public: // Internal methods CBenNamedObject(pLtcBenContainer pContainer, BenObjectID ObjectID, - pCBenObject pPrevObject, const char * sName, + pCUtListElmt pPrevObject, const char * sName, pCUtListElmt pPrevNamedObjectListElmt); const char * GetNameCStr() { return csName.c_str(); } @@ -358,7 +358,7 @@ class CBenPropertyName : public CBenNamedObject { public: // Internal methods CBenPropertyName(pLtcBenContainer pContainer, BenObjectID ObjectID, - pCBenObject pPrevObject, const char * sName, + pCUtListElmt pPrevObject, const char * sName, pCUtListElmt pPrevNamedObjectListElmt) : CBenNamedObject(pContainer, ObjectID, pPrevObject, sName, pPrevNamedObjectListElmt) { ; } -- cgit