Skip to content

Commit d92d9e0

Browse files
committed
Avoid unnecessary, wrong downcast
...causing UBSan failure with the new lotuswordpro/qa/cppunit/data/fail/stack-1.lwp from e68faf7 "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<com::sun::star::xml::sax::XDocumentHandler>&) lotuswordpro/source/filter/lwpfilter.cxx:195:13 > #6 0x7f897ed290cd in LotusWordProImportFilter::importImpl(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) lotuswordpro/source/filter/LotusWordProImportFilter.cxx:76:14 > #7 0x7f897ed296fd in LotusWordProImportFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> 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<char, std::char_traits<char>, std::allocator<char> > 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<char, std::char_traits<char>, std::allocator<char> > 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
1 parent 3934f70 commit d92d9e0

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

lotuswordpro/source/filter/bencont.cxx

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ LtcBenContainer::RegisterPropertyName(const char * sPropertyName,
129129
return;
130130

131131
*ppPropertyName = new CBenPropertyName(this, cNextAvailObjectID,
132-
static_cast<pCBenObject>(pPrevObject), sPropertyName, pPrevNamedObjectListElmt);
132+
pPrevObject, sPropertyName, pPrevNamedObjectListElmt);
133133
++cNextAvailObjectID;
134134
}
135135
}

lotuswordpro/source/filter/benname.cxx

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ namespace OpenStormBento
5959
{
6060
// changed to remove warning
6161
CBenNamedObject::CBenNamedObject(pLtcBenContainer pContainer,
62-
BenObjectID ObjectID, pCBenObject pPrevObject, const char * sName,
62+
BenObjectID ObjectID, pCUtListElmt pPrevObject, const char * sName,
6363
pCUtListElmt pPrevNamedObjectListElmt)
6464
: CBenObject(pContainer, ObjectID, pPrevObject)
6565
, csName(sName)

lotuswordpro/source/filter/bento.hxx

+2-2
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ public: // Methods
344344

345345
public: // Internal methods
346346
CBenNamedObject(pLtcBenContainer pContainer, BenObjectID ObjectID,
347-
pCBenObject pPrevObject, const char * sName,
347+
pCUtListElmt pPrevObject, const char * sName,
348348
pCUtListElmt pPrevNamedObjectListElmt);
349349

350350
const char * GetNameCStr() { return csName.c_str(); }
@@ -358,7 +358,7 @@ class CBenPropertyName : public CBenNamedObject
358358
{
359359
public: // Internal methods
360360
CBenPropertyName(pLtcBenContainer pContainer, BenObjectID ObjectID,
361-
pCBenObject pPrevObject, const char * sName,
361+
pCUtListElmt pPrevObject, const char * sName,
362362
pCUtListElmt pPrevNamedObjectListElmt) :
363363
CBenNamedObject(pContainer, ObjectID, pPrevObject, sName,
364364
pPrevNamedObjectListElmt) { ; }

0 commit comments

Comments
 (0)