[libreoffice/f15/master] Resolves: rhbz#680766 crash in mdds

David Tardon dtardon at fedoraproject.org
Thu Mar 24 16:33:00 UTC 2011


commit 61e0d651ae48acb0d341b7cd59517855260cdfb3
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Mar 24 17:31:33 2011 +0100

    Resolves: rhbz#680766 crash in mdds

 libreoffice.spec                  |   12 +++++++++-
 mdds.add-missing-link.patch       |   15 +++++++++++++
 mdds.do-not-insert-new-node.patch |   43 +++++++++++++++++++++++++++++++++++++
 rhbz680766.fix-mdds-crash.patch   |   13 +++++++++++
 4 files changed, 82 insertions(+), 1 deletions(-)
---
diff --git a/libreoffice.spec b/libreoffice.spec
index b7bc03e..5f46fc4 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -29,7 +29,7 @@ Summary:        Free Software Productivity Suite
 Name:           libreoffice
 Epoch:          1
 Version:        3.3.2.2
-Release:        2%{?dist}
+Release:        3%{?dist}
 License:        LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and (CDDL or GPLv2) and Public Domain
 Group:          Applications/Productivity
 URL:            http://www.documentfoundation.org/develop
@@ -129,6 +129,9 @@ Patch40: 0001-Related-rhbz-680460-don-t-bother-with-an-interim-Fon.patch
 Patch41: 0001-Resolves-rhbz-680460-honour-lcdfilter-subpixeling-et.patch
 Patch42: 0001-Cut-Gordian-Knot-of-who-owns-the-font-options.patch
 Patch43: 0001-beware-of-invalidated-iterator.patch
+Patch44: rhbz680766.fix-mdds-crash.patch
+Patch45: mdds.add-missing-link.patch
+Patch46: mdds.do-not-insert-new-node.patch
 
 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
 %define instdir %{_libdir}
@@ -775,11 +778,15 @@ mv -f redhat.soc extras/source/palettes/standard.soc
 %patch41 -p1 -b .rhbz680460-honour-lcdfilter-subpixeling-et.patch
 %patch42 -p1 -b .Cut-Gordian-Knot-of-who-owns-the-font-options.patch
 %patch43 -p1 -b .beware-of-invalidated-iterator.patch
+%patch44 -p1 -b .rhbz680766.fix-mdds-crash.patch
 
 touch scripting/source/pyprov/delzip
 touch scripting/util/provider/beanshell/delzip
 touch scripting/util/provider/javascript/delzip
 
+cp %{PATCH45} mdds
+cp %{PATCH46} mdds
+
 %build
 echo build start time is `date`, diskspace: `df -h . | tail -n 1`
 #don't build localized helps which are poorly translated
@@ -2121,6 +2128,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
 %{basisinstdir}/program/kde-open-url
 
 %changelog
+* Thu Mar 24 2011 David Tardon <dtardon at redhat.com> 3.3.2.2-3
+- Resolves: rhbz#680766 crash in mdds
+
 * Wed Mar 23 2011 David Tardon <dtardon at redhat.com> 3.3.2.2-2
 - Related: rhbz#689268 versioned deps need to contain epoch
 
diff --git a/mdds.add-missing-link.patch b/mdds.add-missing-link.patch
new file mode 100644
index 0000000..ca41a3f
--- /dev/null
+++ b/mdds.add-missing-link.patch
@@ -0,0 +1,15 @@
+# HG changeset patch
+# Parent d5fb760990e45ae0db4f4b7609d8affb85101a39
+add missing link
+
+diff -r d5fb760990e4 -r c08b02a02f23 include/mdds/flat_segment_tree_def.inl
+--- a/inc/mdds/flat_segment_tree.hpp	Thu Mar 24 14:52:10 2011 +0100
++++ b/inc/mdds/flat_segment_tree.hpp	Thu Mar 24 14:53:14 2011 +0100
+@@ -438,6 +438,7 @@
+             m_left_leaf->value_leaf.value = m_init_val;
+             new_node->left = m_left_leaf;
+             new_node->right = m_left_leaf->right;
++            m_left_leaf->right->left = new_node;
+             m_left_leaf->right = new_node;
+         }
+ 
diff --git a/mdds.do-not-insert-new-node.patch b/mdds.do-not-insert-new-node.patch
new file mode 100644
index 0000000..39dd396
--- /dev/null
+++ b/mdds.do-not-insert-new-node.patch
@@ -0,0 +1,43 @@
+# HG changeset patch
+# Parent ff6ad274f8ecb1715d366ddb53ecafd422252660
+do not insert new node if the whole range was shifted
+
+diff -r ff6ad274f8ec include/mdds/flat_segment_tree_def.inl
+--- a/inc/mdds/flat_segment_tree.hpp	Thu Mar 24 14:54:16 2011 +0100
++++ b/inc/mdds/flat_segment_tree.hpp	Thu Mar 24 14:55:26 2011 +0100
+@@ -430,16 +430,25 @@
+ 
+         if (m_left_leaf->value_leaf.value != m_init_val)
+         {
+-            // The leftmost leaf node has a non-initial value.  We need to
+-            // insert a new node to carry that value after the shift.
+-            node_ptr new_node(new node(true));
+-            new_node->value_leaf.key = pos + size;
+-            new_node->value_leaf.value = m_left_leaf->value_leaf.value;
+-            m_left_leaf->value_leaf.value = m_init_val;
+-            new_node->left = m_left_leaf;
+-            new_node->right = m_left_leaf->right;
+-            m_left_leaf->right->left = new_node;
+-            m_left_leaf->right = new_node;
++            if (size < m_right_leaf->value_leaf.key - m_left_leaf->value_leaf.key)
++            {
++                // The leftmost leaf node has a non-initial value.  We need to
++                // insert a new node to carry that value after the shift.
++                node_ptr new_node(new node(true));
++                new_node->value_leaf.key = pos + size;
++                new_node->value_leaf.value = m_left_leaf->value_leaf.value;
++                m_left_leaf->value_leaf.value = m_init_val;
++                new_node->left = m_left_leaf;
++                new_node->right = m_left_leaf->right;
++                m_left_leaf->right->left = new_node;
++                m_left_leaf->right = new_node;
++            }
++            else
++            {
++                // We shifted out the whole range, so there would be no new
++                // node inserted. Just set default value.
++                m_left_leaf->value_leaf.value = m_init_val;
++            }
+         }
+ 
+         m_valid_tree = false;
diff --git a/rhbz680766.fix-mdds-crash.patch b/rhbz680766.fix-mdds-crash.patch
new file mode 100644
index 0000000..500e112
--- /dev/null
+++ b/rhbz680766.fix-mdds-crash.patch
@@ -0,0 +1,13 @@
+diff -up libreoffice-3.3.2.2/mdds/makefile.mk.dt libreoffice-3.3.2.2/mdds/makefile.mk
+--- libreoffice-3.3.2.2/mdds/makefile.mk.dt	2011-03-24 16:59:53.237493218 +0100
++++ libreoffice-3.3.2.2/mdds/makefile.mk	2011-03-24 17:26:51.098221650 +0100
+@@ -38,7 +38,8 @@ TARGET=mdds
+ 
+ TARFILE_NAME=mdds_0.3.0
+ TARFILE_MD5=cf8a6967f7de535ae257fa411c98eb88
+-PATCH_FILES=
++PATCH_FILES= mdds.add-missing-link.patch \
++             mdds.do-not-insert-new-node.patch
+ 
+ CONFIGURE_DIR=
+ CONFIGURE_ACTION=


More information about the scm-commits mailing list