writerfilter/source/dmapper/DomainMapper_Impl.cxx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
New commits: commit 24135dc15a797ca91dd32c70cbc4d26a05dfd127 Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Tue Dec 5 11:43:42 2023 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Tue Dec 5 20:29:03 2023 +0100 writerfilter: fix crash in DomainMapper_Impl::PushSdt() Crashreport signature: Fatal signal received: SIGSEGV code: 1 for address: 0x0 program/libwriterfilterlo.so writerfilter::dmapper::DomainMapper_Impl::PushSdt() writerfilter/source/dmapper/DomainMapper_Impl.cxx:987 program/libwriterfilterlo.so writerfilter::dmapper::DomainMapper::lcl_attribute(unsigned int, writerfilter::Value&) include/tools/ref.hxx:56 program/libwriterfilterlo.so writerfilter::ooxml::OOXMLProperty::resolve(writerfilter::Properties&) include/tools/ref.hxx:56 program/libwriterfilterlo.so writerfilter::ooxml::OOXMLPropertySet::resolve(writerfilter::Properties&) include/tools/ref.hxx:157 Change-Id: I76416ca707a4ac40495e5c22f62fcd017bcb5e48 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160336 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> (cherry picked from commit 728f6ec104b1a91c8c8ea0790bc7f56471c67737) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160351 Tested-by: Jenkins diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 183d71d5833a..e9d57ea34cef 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -977,8 +977,19 @@ void DomainMapper_Impl::PushSdt() } uno::Reference<text::XTextAppend> xTextAppend = m_aTextAppendStack.top().xTextAppend; + if (!xTextAppend.is()) + { + return; + } + + uno::Reference<text::XText> xText = xTextAppend->getText(); + if (!xText.is()) + { + return; + } + uno::Reference<text::XTextCursor> xCursor - = xTextAppend->getText()->createTextCursorByRange(xTextAppend->getEnd()); + = xText->createTextCursorByRange(xTextAppend->getEnd()); // Offset so the cursor is not adjusted as we import the SDT's content. bool bStart = !xCursor->goLeft(1, /*bExpand=*/false); m_xSdtStarts.push({bStart, OUString(), xCursor->getStart()});