[libreoffice/f21] Resolves: rhbz#1180114 writerfilter: don't crash on w:customXmlDelRangeStart etc.

David Tardon dtardon at fedoraproject.org
Thu Jan 15 09:02:43 UTC 2015


commit 4a1a8509ccbfd0a97493f53ae2440069a13447b2
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Jan 15 09:53:25 2015 +0100

    Resolves: rhbz#1180114 writerfilter: don't crash on w:customXmlDelRangeStart etc.
    
    (cherry picked from commit 9fff4d34cb894e2abfd7ca67389cce3dedb8bedd)
    
    Conflicts:
    	libreoffice.spec

 ...4-writerfilter-don-t-crash-on-w-customXml.patch |  167 ++++++++++++++++++++
 libreoffice.spec                                   |    3 +
 2 files changed, 170 insertions(+), 0 deletions(-)
---
diff --git a/0001-rhbz-1180114-writerfilter-don-t-crash-on-w-customXml.patch b/0001-rhbz-1180114-writerfilter-don-t-crash-on-w-customXml.patch
new file mode 100644
index 0000000..7806585
--- /dev/null
+++ b/0001-rhbz-1180114-writerfilter-don-t-crash-on-w-customXml.patch
@@ -0,0 +1,167 @@
+From f22964e0e622af1168e241f933e5cf98e093ec2b Mon Sep 17 00:00:00 2001
+From: Michael Stahl <mstahl at redhat.com>
+Date: Wed, 14 Jan 2015 23:01:41 +0100
+Subject: [PATCH] rhbz#1180114: writerfilter: don't crash on
+ w:customXmlDelRangeStart etc.
+
+We can't do anything sensible with these CustomXML elements but now we
+have to handle them because.
+
+(regression from 9dbf817fe5c5253fba0831aefa17575ae0ba3af1)
+
+Change-Id: If4247890ff9961a77434587802670d28608a7922
+---
+ sw/qa/extras/ooxmlimport/data/rhbz1180114.docx    | Bin 0 -> 3435 bytes
+ sw/qa/extras/ooxmlimport/ooxmlimport.cxx          |   5 +++++
+ writerfilter/source/dmapper/DomainMapper.cxx      |   6 ++++++
+ writerfilter/source/dmapper/DomainMapper_Impl.cxx |   3 ++-
+ writerfilter/source/ooxml/model.xml               |  16 ++++++++++++++++
+ 5 files changed, 29 insertions(+), 1 deletion(-)
+ create mode 100644 sw/qa/extras/ooxmlimport/data/rhbz1180114.docx
+
+diff --git a/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx b/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx
+new file mode 100644
+index 0000000000000000000000000000000000000000..23009ebbdc827c0d23fb9bac24b481548110f277
+GIT binary patch
+literal 3435
+zcmZ`+c{o&UAD*#~eJiprgUK$6EZO%aLxapDSu?T^S+nmUJ41FQLKG7wQPz?rWM at Q*
+zEEAG7eWR}TQr`DF=Q_{x&$*xL`Q7J!?%#c2hNNVy000#g0OB2_npN3OJp}*&v`7E|
+z8sco_Y441dk~|zMQ>F|^)oCLMd#swPxG^)v<lL16swS2)21bV`I87y0JDo~50$-eD
+zn)b_Xu*m1Y2rt}I)iSn>Wt;wL6avO|u~sskBaeP-iF0)G(Q2|0yc}#KX>aPIF)W>)
+z;>z?CGkV$8W)>!*$!c^z<BW{}x+K|S0y_dxRVm2#D{p$w7k~qL`x@?Z5)^2As}nwr
+zp&@Jn{b+u}$bPL4-YHH3?H*O9z=CXa-g|}Ejp(8>U`S>IHh8`fIWvp?aD7Zt(AdCG
+z%lxOloOxjDbDf%P?^&a4)99ye3wR*xFBZhWcT!k at 06;g91!f`(K5m|NQVwpeUT|w0
+zXM0Is7w1Y7oNKEz?d0Bxu<u%lp(jI`l)47Wx?rWeEu&uIY7Cn2%3Xq3a|Y`|(ye0O
+zP8>^D>zbk1aIqi?+UqkBAuE?&dB0(Pe{Q{T46Va+k?sx0+ntcMyX}Mgb_r+mu5ihx
+zMc#Wh?So;2*F6lyVl`Q6Iuz+HT$qBAEq&=7qmC_VG!uZPuobFvTod;fx1;c?ZO}_-
+z>t!Fsy_aSwKgso>>y+3-<woY)z2S0obhTsm`%d3=WDxzV|Ej%&8c}Y&(x~rDqPY0z
+z*2>ll`09zoq^#oo7&!f|(|gO5F|i+Rk1v- at B31TL)F}%u`P|my=mVAM&5BZc(m-jd
+zx?b-a at afwUTcvItsR*5|VEljyY>n=33S)kx+0+xMOCr+9^$&%=)nw;p>+NFi>UGHD
+zZ)GL*P`{F9j3C^OtM<vkQZk{&?@%=v+z!cd4VDfD8!u0A!iK^q8F+5^e9y7&-hBXW
+zDB4JUN4qXZ8ivSn9Uu+2#aX!&RHdwkq(nQe&Dp8M%8$#kYgQu-n%Ip!@;UA(y86$t
+zG8i|8A|!hQ)ev at L*^NdNa2jEhB1P4rC*O+m8XI<TPk*L2=8gvU3oRJ0L+l0S22N>d
+z-vv3(kf6I#2dD6y+=!r*ZP%|HDu!So%Rp=+=~2b^v64DtB!<i&qF^G)0RSdq&A&wR
+zXRW4i5P(#B9t%HwynSf^Kr$9G0N~e<0EfEGN;5WXhza0P8ig?l9R7vyfCXv^`1qqG
+zg;=2pmN6E{-qMJ$m7TTudHZYod3fKByw90ZLg9k)W+9ilmiYyMBeW)k8xetA*ufJZ
+zag$sVP`1d&w-SC9MtMda)D<RIZD(%vpNoos>vU$ExN59q8g{BW=|fs*9Dg_2Tu-zd
+zb!rkxO?+!LlZx8wI%IbXB#u5?xk4zXLo6`9$lkHOWMRE765 at iJSPMST6+%v<;+H at d
+z5ggYi5$04vH?6cISFspvLHgybMb>%t&qMu#>GRUb&?dd%R6cj^?TBy7tu&COhlxH9
+zw9ih at S**{n@|InU+2j+j7NMe~?&K}+>7}h7xoBoVwrTj9E>pFvcZa7;{WEwV;%zLA
+zV<dUKnH#W5oB*-%9$#E#ZoU~{Tf=VuPBh?7`|VjJuASkK#x*~VdD)~b2cw at 3yfYn6
+z=f}&Lwsg8P0#GQQv*I at t7NqjJSI;>fL at H%(ghDZdU?q(Y!mm8fTJ6M7;xIigw7Z*q
+z2}5KD!bOJNvY#>&?EqbtyUCP(ktz at cs1l!FR8v>X^ZGC<d(x;xRZ;JU8+~cTrT0ME
+z^C2I3hk60n8*d-hwvrYpZR)U_v&-uuvgM-tfZYl8@`8ch7V14OO5&ekXnK4|Fpv7@
+zX4gAMhHj+3Gnn<}-Te{(Z?@pA+d!-A{Gq8sJC>7a3V{$c6+sCAF#L0h&|ZGd_UK<O
+z1joCLOEU)Ht(bOlDf&C4&cY!qqRcj_<4wyeDO_#kw#W;EYCm_!_))qv$m?^!&d+^5
+zTetB-&wOwiWPOe?Vy9}Rp_$~6%jq5sv7>i8{cg08JmHgNG_Yy=uD9&EyNJD)G(}U=
+zGL<QJS}+6oNW at wXl}O&7FaVhvLtscMCbFSdL{m}4CScD+8m8~KDfKIWOy_Yh?HBK4
+z?FxT)x^x!YNEMcXl#^8P at eDKd-5?64n)Js4SFW^s+{p3GEsR?tbVv#H!B2^y5}4_n
+z>B7E-JV}BzHC_%)DvZtYn!L at 6Fm8*QlDX+heH9rj6NuACRwfiHOd!0QN6s5K^$$DO
+z=!{Hd`D1WV%CwMqWgEl10^pJ|h^PN+-Q&#00ohh==reUbB|&<oJtx+_FiLmRPkdS=
+zi>Z_!W%Wy$O~IFi(oor7cJa&ZYEsbJpAE5X-!2HNxn33jfO(X((QD&9Ibb*)YyOz|
+z{!nc2aD`Z-wac1cUx3wkRuJK>2ij}lH1O4Oj<WrJbm#(IqVO!p_%YX~7IV!vV*b_G
+z>D_D1*)3#K;Np>jfST~$oS!xYeH+sc-hpy-*veHLi at z6}%NUOx<ZmA2w3U**2<fS&
+z%MlU@$kQAAsw>=z&$^c%DqkukYcup<lf9NVTFjZ9djb|*nsIg330W^wY~~h%KUkwv
+zu(7(d{XzA?uvHcfE9Wy~XMWj9%fgZR$ZO^d>Kj^vR!2s4D5}L)%-v$5m}rRB%t)Mx
+z9tHDsb4N>AySpE%Dz{IDCS014e5R>c<H=3uXcO=k6GfluDNRqOmPvij6F;_~r-z#6
+z=3aINlw1BtlVB_otZ1)+Xj3?LDRMcjEx7Jz+a;exs4!_roQo-Pq5s0;7}Y{=lR*|=
+z$By}I at WxT+tK!MBj-hX?&p)xY@|6*CL&Y$ely-ii-A^OZffA#E2cffKW;8$VAkO69
+zUK?{kuXDU-S}H^HWShKJfi&P9r~fX96S`wbM=WNN_%Quhkgc2NuWs#<Y-HFf%^pn%
+zic1N|Dd83<?4f^ii8|~=J5ui&?s{qzxN72=d?hm1HmSRt at Va%c^cn%0ztTdfGD`6-
+ztbn$HD-CNIer*C86#axT(zJ+ITy6mXtlWW0aHobx-%wTfYOL9n(nTR`8IF}vjPgiA
+zN(->YR-fMIdd?)1{-X6#m()9;B&eaCq6j8HtqejxV}EB{_OZwd|018<z-HlPNCI#$
+zY*ux6!Pnh=v-7lav7j$Y)hqOqq`d+*C$3JL3J1weqqV)kxo%~rs+C$%P|S$#*;F1a
+zvUDNfp38FDbJHz`6^gYKSazv-6#`M?+3sk;xNba0L!N(Y)w;CwvWLmshG*3QZ^Tc)
+z-`tfyaJtSz<ZXf!0AL|<htwp-9Aa~}g8RAKqb(2h(3IM9sr7ez?lMnPa95)eS_H-l
+zeq-$I8qH}FI7l8z`@Ui!&&aRFYS7-EGLPADV8J0=-)2?v7u>=+lxn{|Q$29nWiNZG
+zZe)iXdG1d6lz&Tn?a7<x+7_hF>z)r`x}w04aY>OaKBksVWlQ5i9M86eMIL(5nT&HI
+z>&%tQQ_PZ%<YNXAzJjzv at pwx1WHyxj*n2y at x7i?qu7q|;P at v0uO2mPIL2oVv<;q$F
+zS$r_m|Cah%B2}d?d!gPNE1=~F3iRf+h-QXB`_2rQZ$L!WRz{Z~A=9HQlDv=q6wIKq
+zy1fz0G`_kL>Y+r!)7+l6$DQ~5(TuXEzz+-qr>7|FeEL_$q62<pqk9Wo;NJY}ADH at w
+z+p9I_q+o_X5>~+fPtZh8|G56h)5n3wL+25Sg7|&@9YK%dk0-7pygspm{KEgA{B^hz
+z59#j`{+(ple=S7Z0-!cjiKvqQ$Tj4 at bIq|#b9{rxo7vF@?-C=^uVs%~+i~!5(>elw
+zB=*MR7Iqwc+#!z8byR<#|M83C at Z*Q%2)+jT&m#jfB&RrhiHdliAhNG^_%8+cA4jT|
+AG5`Po
+
+literal 0
+HcmV?d00001
+
+diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+index 5bec69c..7e8c62d 100644
+--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
++++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+@@ -757,6 +757,11 @@ DECLARE_OOXMLIMPORT_TEST(testN779834, "n779834.docx")
+     // This document simply crashed the importer.
+ }
+ 
++DECLARE_OOXMLIMPORT_TEST(testRHBZ1180114, "rhbz1180114.docx")
++{
++    // This document simply crashed the importer.
++}
++
+ DECLARE_OOXMLIMPORT_TEST(testN779627, "n779627.docx")
+ {
+     /*
+diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
+index cb45bb4..461c138 100644
+--- a/writerfilter/source/dmapper/DomainMapper.cxx
++++ b/writerfilter/source/dmapper/DomainMapper.cxx
+@@ -2213,6 +2213,12 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
+     case NS_ooxml::LN_CT_PPr_pPrChange:
+     case NS_ooxml::LN_trackchange:
+     case NS_ooxml::LN_EG_RPrContent_rPrChange:
++    case NS_ooxml::LN_EG_RangeMarkupElements_customXmlDelRangeStart:
++    case NS_ooxml::LN_EG_RangeMarkupElements_customXmlDelRangeEnd:
++    case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveFromRangeStart:
++    case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveFromRangeEnd:
++    case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveToRangeStart:
++    case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveToRangeEnd:
+     {
+         HandleRedline( rSprm );
+     }
+diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+index 57f491f..e97c133 100644
+--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
++++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+@@ -4836,9 +4836,10 @@ void DomainMapper_Impl::SetCurrentRedlineId( sal_Int32 sId )
+     {
+         // This should be an assert, but somebody had the smart idea to reuse this function also for comments and whatnot,
+         // and in some cases the id is actually not handled, which may be in fact a bug.
+-        SAL_WARN( "writerfilter", !m_currentRedline.get());
+         if( m_currentRedline.get())
+             m_currentRedline->m_nId = sId;
++        else
++            SAL_INFO("writerfilter.dmapper", "no current redline");
+     }
+ }
+ 
+diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
+index fc671af..f1c721f 100644
+--- a/writerfilter/source/ooxml/model.xml
++++ b/writerfilter/source/ooxml/model.xml
+@@ -17281,6 +17281,22 @@
+     <resource name="CT_TrackChange" resource="Properties">
+       <attribute name="author" tokenid="ooxml:CT_TrackChange_author"/>
+       <attribute name="date" tokenid="ooxml:CT_TrackChange_date"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeStart"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeStart" action="clearProps"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeEnd"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeEnd" action="clearProps"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeStart"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeStart" action="clearProps"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeEnd"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeEnd" action="clearProps"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeStart"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeStart" action="clearProps"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeEnd"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeEnd" action="clearProps"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeStart"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeStart" action="clearProps"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeEnd"/>
++      <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeEnd" action="clearProps"/>
+     </resource>
+     <resource name="CT_CellMergeTrackChange" resource="Properties">
+       <attribute name="vMerge" tokenid="ooxml:CT_CellMergeTrackChange_vMerge"/>
+-- 
+2.1.0
+
diff --git a/libreoffice.spec b/libreoffice.spec
index d32401e..7f67ea8 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -366,6 +366,7 @@ Patch58: 0001-radio-check-top-center-bottom-alignment-for-table-ce.patch
 Patch59: 0001-allow-comparing-documents-which-only-differ-by-frame.patch
 Patch60: 0001-classic-draw-rectangles-fit-to-contour-utterly-broke.patch
 Patch61: 0001-Use-the-same-advanced-Ellipse-and-Rectangle-shapes-i.patch
+Patch62: 0001-rhbz-1180114-writerfilter-don-t-crash-on-w-customXml.patch
 
 %define instdir %{_libdir}
 %define baseinstdir %{instdir}/libreoffice
@@ -2339,6 +2340,8 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
 %changelog
 * Thu Jan 15 2015 Caolán McNamara <caolanm at redhat.com> - 1:4.3.5.2-10.unbuilt
 - Resolves: rhbz#1182018 python required for wizards now
+- Resolves: rhbz#1180114 writerfilter: don't crash on w:customXmlDelRangeStart
+  etc.
 
 * Wed Jan 14 2015 Caolán McNamara <caolanm at redhat.com> - 1:4.3.5.2-9
 - classic draw rectangles fit to contour utterly broken


More information about the scm-commits mailing list