summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-09-12 21:01:41 +0200
committerMiklos Vajna <vmiklos@suse.cz>2012-09-13 10:41:36 +0000
commitd026212d51cd7fe0dbcfe3a28bd15675528723ff (patch)
tree8dc46cc9a7c4b3f1db85acae5b95df890fb2a86d
parent41f314522e82d96f4505b9a302dc5ddaa059d3a1 (diff)
fdo#42450: fix crash in SwXTextSection::attach:
Inserting the section can fail if the given text range is not valid. (cherry picked from commit 5bc6c7b2e170a35914d7cd07347c77a9c9d23664 and commit 2940a697dce2292e9c5b118feb8ec4159e3606fa) Change-Id: Ib6ba3b02dd581dce08b646b841354073caf894b2 Reviewed-on: https://gerrit.libreoffice.org/604 Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@suse.cz> Tested-by: Miklos Vajna <vmiklos@suse.cz>
-rw-r--r--sw/source/core/unocore/unosect.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/sw/source/core/unocore/unosect.cxx b/sw/source/core/unocore/unosect.cxx
index 1524d8240ad6..729ce0d128aa 100644
--- a/sw/source/core/unocore/unosect.cxx
+++ b/sw/source/core/unocore/unosect.cxx
@@ -399,6 +399,14 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
SwSection *const pRet =
pDoc->InsertSwSection( aPam, aSect, 0, aSet.Count() ? &aSet : 0 );
+ if (!pRet) // fdo#42450 text range could parially overlap existing section
+ {
+ // shouldn't have created an undo object yet
+ pDoc->GetIDocumentUndoRedo().EndUndo( UNDO_INSSECTION, NULL );
+ throw lang::IllegalArgumentException(
+ ::rtl::OUString::createFromAscii("SwXTextSection::attach(): invalid TextRange"),
+ static_cast< ::cppu::OWeakObject*>(this), 0);
+ }
pRet->GetFmt()->Add(m_pImpl.get());
pRet->GetFmt()->SetXObject(static_cast< ::cppu::OWeakObject*>(this));