[libreoffice/f17] Resolves: rhbz#876606 regressions in MSO binary import filters

Michael Stahl mstahl at fedoraproject.org
Fri Jan 4 18:47:03 UTC 2013


commit 86c09e22a1215afc75242b3902fa2af869d6fbcf
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jan 4 19:45:22 2013 +0100

    Resolves: rhbz#876606 regressions in MSO binary import filters

 ...o-not-check-the-stored-DIFAT-sector-count.patch |   14 ++-
 ...o-53909-STG_FREE-sector-locations-rejecte.patch |   61 ++++++++++
 ...o-57532-restrict-page-sanity-check-to-non.patch |  116 ++++++++++++++++++++
 libreoffice.spec                                   |    5 +
 4 files changed, 191 insertions(+), 5 deletions(-)
---
diff --git a/0001-Do-not-check-the-stored-DIFAT-sector-count.patch b/0001-Do-not-check-the-stored-DIFAT-sector-count.patch
index 7e68b46..bbb6745 100644
--- a/0001-Do-not-check-the-stored-DIFAT-sector-count.patch
+++ b/0001-Do-not-check-the-stored-DIFAT-sector-count.patch
@@ -1,21 +1,25 @@
-From 50d89530eee57afb890e2e65aac8a5b0f93a74a3 Mon Sep 17 00:00:00 2001
+From 1b0c2d842ce92ea350a681a8f3ed6733e7094318 Mon Sep 17 00:00:00 2001
 From: Kohei Yoshida <kohei.yoshida at gmail.com>
 Date: Wed, 15 Aug 2012 14:06:06 -0400
-Subject: [PATCH] Do not check the stored DIFAT sector count.
+Subject: [PATCH 1/3] Do not check the stored DIFAT sector count.
 
 Refer to this thread for details.
 http://lists.freedesktop.org/archives/libreoffice/2012-August/036852.html
 
 Change-Id: Id2115732a1e1bcd78c13445f5aaefe1ec7cfa0c2
+(cherry picked from commit 50d89530eee57afb890e2e65aac8a5b0f93a74a3)
+
+Signed-off-by: Ivan Timofeev <timofeev.i.s at gmail.com>
+(cherry picked from commit 1053dada25491ba5609ae47bef8766e379e96fd8)
 ---
  sot/source/sdstor/stgelem.cxx | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/sot/source/sdstor/stgelem.cxx b/sot/source/sdstor/stgelem.cxx
-index 5fb3a09..dfcc28a 100644
+index 1af72f9..90f1e2d 100644
 --- a/sot/source/sdstor/stgelem.cxx
 +++ b/sot/source/sdstor/stgelem.cxx
-@@ -194,7 +194,7 @@ sal_Bool StgHeader::Check()
+@@ -203,7 +203,7 @@ sal_Bool StgHeader::Check()
              && nTOCstrm >= 0
              && nThreshold > 0
              && ( nDataFAT == -2 || ( nDataFAT >= 0 && nDataFATSize > 0 ) )
@@ -25,5 +29,5 @@ index 5fb3a09..dfcc28a 100644
  }
  
 -- 
-1.7.11.4
+1.7.11.7
 
diff --git a/0002-Resolves-fdo-53909-STG_FREE-sector-locations-rejecte.patch b/0002-Resolves-fdo-53909-STG_FREE-sector-locations-rejecte.patch
new file mode 100644
index 0000000..9656b5d
--- /dev/null
+++ b/0002-Resolves-fdo-53909-STG_FREE-sector-locations-rejecte.patch
@@ -0,0 +1,61 @@
+From 4bb506fbf88bd608cba534d4a431529d7cb05061 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Thu, 22 Nov 2012 22:29:11 +0000
+Subject: [PATCH 2/3] Resolves: fdo#53909 STG_FREE sector locations rejected
+
+(cherry picked from commit ef9f9b750eac2966634c385a2021716c4de0e4cd)
+
+Conflicts:
+	sot/source/sdstor/stgelem.cxx
+
+Change-Id: I6f71c7e3cfeeba8a76096d5be68838b8d401c580
+Reviewed-on: https://gerrit.libreoffice.org/1150
+Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
+Tested-by: Stephan Bergmann <sbergman at redhat.com>
+(cherry picked from commit d99c7edff18fb84312928589d3639d0005c23bbe)
+---
+ sot/source/sdstor/stgelem.cxx | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/sot/source/sdstor/stgelem.cxx b/sot/source/sdstor/stgelem.cxx
+index 90f1e2d..e0d738a 100644
+--- a/sot/source/sdstor/stgelem.cxx
++++ b/sot/source/sdstor/stgelem.cxx
+@@ -191,6 +191,14 @@ static bool lcl_wontoverflow(short shift)
+     return shift >= 0 && shift < (short)sizeof(short) * 8 - 1;
+ }
+ 
++static bool isKnownSpecial(sal_Int32 nLocation)
++{
++    return (nLocation == STG_FREE ||
++            nLocation == STG_EOF ||
++            nLocation == STG_FAT ||
++            nLocation == STG_MASTER);
++}
++
+ // Perform thorough checks also on unknown variables
+ sal_Bool StgHeader::Check()
+ {
+@@ -202,8 +210,8 @@ sal_Bool StgHeader::Check()
+             && nFATSize > 0
+             && nTOCstrm >= 0
+             && nThreshold > 0
+-            && ( nDataFAT == -2 || ( nDataFAT >= 0 && nDataFATSize > 0 ) )
+-            && ( nMasterChain == -2 || nMasterChain >=0 )
++            && ( isKnownSpecial(nDataFAT) || ( nDataFAT >= 0 && nDataFATSize > 0 ) )
++            && ( isKnownSpecial(nMasterChain) || nMasterChain >=0 )
+             && nMaster >= 0;
+ }
+ 
+@@ -404,7 +412,7 @@ sal_Bool StgEntry::Load( const void* pFrom, sal_uInt32 nBufSize )
+     if (n > nMaxLegalStr)
+         return sal_False;
+ 
+-	if ((nSize < 0 && cType != STG_STORAGE) || (nPage1 < 0 && nPage1 != -2))
++    if ((nSize < 0 && cType != STG_STORAGE) || (nPage1 < 0 && !isKnownSpecial(nPage1)))
+     {
+         // the size makes no sense for the substorage
+         // TODO/LATER: actually the size should be an unsigned value, but in this case it would mean a stream of more than 2Gb
+-- 
+1.7.11.7
+
diff --git a/0003-Resolves-fdo-57532-restrict-page-sanity-check-to-non.patch b/0003-Resolves-fdo-57532-restrict-page-sanity-check-to-non.patch
new file mode 100644
index 0000000..fb3699b
--- /dev/null
+++ b/0003-Resolves-fdo-57532-restrict-page-sanity-check-to-non.patch
@@ -0,0 +1,116 @@
+From 55a9d02afec39a4c94712cf5f17daddce52cdf51 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Wed, 5 Dec 2012 13:16:32 +0000
+Subject: [PATCH 3/3] Resolves: fdo#57532 restrict page sanity check to
+ non-storage chunks
+
+Change-Id: I47c24131e95b9a8a691dbff4710869ba91df8306
+(cherry picked from commit 4a1044229afd6b52ca10e5c55f1957b153a8c6ea)
+Reviewed-on: https://gerrit.libreoffice.org/1245
+Reviewed-by: Michael Meeks <michael.meeks at suse.com>
+Tested-by: Michael Meeks <michael.meeks at suse.com>
+(cherry picked from commit 05a116786648c0a045956b626c3f9f163f0a268e)
+---
+ sot/qa/cppunit/data/pass/fdo57532-1.compound | Bin 0 -> 25088 bytes
+ sot/source/sdstor/stgelem.cxx                |   2 +-
+ 2 files changed, 1 insertion(+), 1 deletion(-)
+ create mode 100644 sot/qa/cppunit/data/pass/fdo57532-1.compound
+
+diff --git a/sot/qa/cppunit/data/pass/fdo57532-1.compound b/sot/qa/cppunit/data/pass/fdo57532-1.compound
+new file mode 100644
+index 0000000000000000000000000000000000000000..70068fe10c893813cdd0fa95a83a7326f69c9c32
+GIT binary patch
+literal 25088
+zcmeHPdu&@*8UOCJojPsZrb&~&x6>}`Gxg#=lQOzEuQpwqge0XP3d2cm8W+d*t{uAY
+zQh)*#+8<>b4^5LcrdCKWO=V0738n#p{eyslK!|@(ktS53Nn~ZBVp?l{zjJ*Z+i{>N
+zl<~Ny{oV8WzVn^)oyWcBoX@%Z^A%UV`pvb!moj%yd~!2aEmcM72Et8lyhbF9Fw<`4
+zaycgN01))te~|`WyZ8fnuT%#`g0(NR6GhOoaDMdfB9Ub>e0uowpHKYxgibAaRQnrb
+zQN73)-f3tAd`|X?5-MkmG$1XPTVBYSFYFS$UkAQ~TF}ui4l}Jbz-Oty(n-?K&H4OF
+zehVl*fc&NKPs1mlOBY=%(t=_A`8 at x8{xkXfG_*ul?w^KEO{6E_(-r%ae*x()z<+nO
+z;|C$P5%H-dB5y$cL`dX2h&Le}N}l7~_PcV+33~JOqQ425E}iSMT)G$YbmjVW+wD+^
+zu)WV0>BZ$M_gOyWvAnzByXE{4akiUrjt1(dl5_jP^~>v39(UX0mdE;h8wI=da%B|q
+zQIBOvd=vg^H}f`pw>-CfpFq1fp02!O at Z4{jUozbKyZ&Q&y|{e0A at UBe^hSqz`g)^B
+zRd-is*MN?wzHT*ixJ$Jk?dk1wBgexJhU at wVdfpu!>QY91sImQMsDGeqa8M0&9qoz^
+zc7=6PcPf!corxz;skCinGRn5nDLb1{sWCNdC9Sb|R*g&|9!rj@?6{@6tx?O4W#g&j
+zmW-OPtSnj2#Ixfn)E=`_NtSUKWyUj2n!Z=l#u7!0ESp8OC*mk{JeE<3*kp2K+!|Fe
+zl}3pyUBynt;>k=_Q>N`yI+a0wah1ZM&<RV8#1aWLnI;1Q!@5Y;H663FaU at Oc%*0QP
+zXTh7cQt5=HvMF`Oj%RfMwTRp5Sbx5GDFxc3N=@2 at YCuSL$}X<gSjwJgQYa~wu~f!_
+zsF=!RV-smse{@tU(Mo>UN~F at R43%`1kQy6{k67w>GM=4+nkF+=lNy|ug7yZpHk8?<
+zPFR`jsaO{2Ct at Fh`mMw$g541n=^AKKs7lsKSm|*nS~W*nckOv*S8HT<WOrDpq49V|
+zWyVvJ3F-+QnVqzgs1zDZZRbS~PpNJ at J{p at +yHzx8#}iE|(%RaRZ|B&g4O&~plWeB0
+zb)l^zsbn at bl06U#9kVlGbtDdbM-vGvx${AcfhKjVy(`?Lw)Rh=6Gqg4mC)=N)u-ER
+zZ)*w-6{?<`oEV0f=E(l$U26aSmey7_Z6Y-sM-Mf(>}^(iBYPvw&8SxOu6^oAEIApo
+zr*ut2bUr?m{vQej8L6&I$4*)5<aQOaW5e;0m63WT-+>9}73pcf(}1Uew at U-~3Tgs&
+z0(*gdz<!_)2;hsQ3a9~A0JT6Juo_qcYyq|c+kovr6R;EDzTx`S-~H_B^&fv<UcyK2
+z#p at Tpa`C$S`0Z-rzfkV#wsUXgI*v3--w~g at 3z#@8{v;r4e5Wa=JpXvmSn1>-G#)ex
+z^!|<`_yVsk<khsDyMdC|7fP19&EO}U?5d#Ql)JK!i_+?lUoLKafu}qN3<4RYwXf$s
+zuLZatco1N}KM5 at 1*DR0*9tPfngMjw}p8`G&d>8l=FasFqZxiqVet_d<5fB8bfyKa5
+z;LYNG_#cS8UfiCmw-Nb6F;7Y4%Dg!xWSE~Kkw&9-^fjKq at Gu6uDqo{-d!rG0B_Kxg
+zjq;R_Y%$sA4vnn6Q~mF*7c0^4tAHH<*M*Ai=38&wteD{?-YE^3Awx{VSjTx80+s{C
+z>pc6d9%umE{wrSJF|KCa{E@%R5{Z<|m-%_-&-r6<X(f>op5GUf{qKk8%y at KJ=#`+D
+zFV%fyi%~q=u~^iOK82N{?!u$aY7q(;E1HekW?A2F$laGd6;_vCiEg~q;@@=XvU$(>
+z7JuXU%jUh8Fb0se8foS)e`V-(#+Y_Wz*15cchYC`{pI-v*QuiXvbb4BU(SzVizYk#
+zmwCbl7ta6ND%*tMKR4`9c+ZL&7(!}i#hhDDTq-z0u#)jdbjRH~pGWCwz|(-I0Z#*-
+z20RUT8t^pWX~5HfrvXm`o(4P({ChM|D;s4o_U-SJ<=R?_Qt!tt#_KtgKF*hWB_*~@
+zNK6ul2Y^T;&V!`m$ZA|h_;Cs1m+>I(L8^nv!__!ip5yM9Xxp{iS9N&}IBl?G45dw?
+zysRkcN7x2V>1SHTk=6~FN#qv0CfU(u$Te+&xKz53KMJHkWr1S|&qp+eiI(6VOSZQ?
+zD~7QT;T3bJ2Xq}QNVHJK2%bE~I=tP$G13M|sWoWZ7}E8igvxSg=hh;dA!nmO%cj~2
+z^z%zPD0Prz%0Xy9fcp1I2ig%qIUA%-aDcz;>}7K~u;Og<jk*h0oCE#yjf-()4`urg
+z$V$zBpoD)H_}9Rmt-$|Gfc*M0pqRJ50`G3kTR+R24p!uCsKC2N^ES-#wk at g1yQ%{3
+zUd_8|mbYeE1>SwKTJ!FcVtuiH>tV-*_PV;tx0MH<)Kgg2Xufa>-+u6gps6ChJpDdd
+zTR{%{w;tCeMf7EI_Q|>me65;qT?Ib39}mi6&Bt-DNP6_R=2&*d!WvmmUS}+ at FF*KZ
+zSzjKMCG+q*V_`!ne}%CS*8B%h(<OQwMj`t!=0prLEROn|(z?2f<&?E~lWfwwwD((t
+z at f(vgW=mYpURpoijr3h|v+r8YFj<=w@(||Y!<hTA0-c(}2ST{8&pAkTV&zX{Iu1v{
+zj(ub)Jxy?p{9<I}N#}aBt1Q?61|2JAQn4%?mcuO6&=$>1qeK^61t}P&nkAs=tcyB?
+zdAr72FO;Rjylr6|{{?2Bg?yI9T9UUGV4dnVK9T$4G}f}2HpEcIjKb4|iJ at Byo_)I@
+zH^Xgm*Xu0BX-iI~r>EsQ3O2C3&- at S>N`f;KM`9{yx%g(jj_`8v&unFyRL`)0a%ak7
+z&BrFO`J}hu*XGl;vT>pPxGb6Bq?`r}`6QmWG}g~g>*rbhd>Qqvk)N>ElEX7751>M<
+zQ_Tzn<lPD#)<hD at rz6IuJVw%dQ%Jxo0XC%>;ahGBc-*G6gRjsO>IWvGgJ=pZSm##O
+z?_=*h;B&4*W~)g9G4?x^!CUnigkOMJ{Cm){48o4{qXSm~tAXvneSi;R!U1XiK1B}i
+zX10=V(h<BxW0<2#j_LPw95EYnYf27bULBB=NS{J(CvrzH?<VvcFN at loL|PnvOorhn
+z0CJtg`@UP+<+wbEaKC;-W<aIzej3BSxPDvOWqEwdCG?7s!INe8%Yf{ZJ$Rpmv5HW3
+zuB|Jbfnnufb}BKMQ5}6p`vz1`j~wkEiX4!x{=uPLQkkN1s-sK&^taV~9 at jm~cTVFf
+zsal>~vL`r-!M8}pas6fB$q{lp&ZmduENA<wSCtcEiOxk8ZGKCgF;6>+sQ%+>EYq_(
+zdhXd at Kx?ycx8A0^E^vALASZ2`Gl32 at oCmdOR`~+{fa&AtEpcv9Ll{0BfE-S}@Xx>>
+zz~JD=WfB~FQI08rfMFVos!W=ZXy=M$WSWmb4Acn>+Y|<!$nMQr`jRTYNjI<bC<Zg9
+z2YI4-o<J2ie5U_%oKZ#Y>3n#Whc)KZvLW>hav#{Mr7rSSn`XfD&nvY9^pjdLKR4ZW
+z(?p*4n&(z;6W(E(deQsI`c2&gg`0Zlr4af!@}2JRV~OB`<+}V$Y(CmqwN2Wl-8|2~
+zT at COBT<n&W59i{{1%-1tx9n{gO;LPo^<Y_L=qN@;H$IIzfq|kNF1y{x8^Q-!7yNcm
+z_JE at k;nJMr`I`Kr*TO%_Ur>WQ;{SFH+=MlVzw9l?HW|Q`&pdtYuYKb+-}pjMc5M09
+zZ~1L?4jEjJnST!8x_KVp9QhHzb?h?0W$G%xHT(^LpHzM@@w;g~d`^U|@bSeco$&b<
+zg$WAwWFjZw^A|ef at VS>y!>7zg;PdNh8b0N|3Ss;{+Ya3F?^whhB at c?gTVSY%VV2!#
+zjU-}8bu4Aa at l%f}U9P4<I%(LBUjB$7A;<n659_r{93Iy7SbW4zWm02Vbs}Yts+MrG
+zs5Yd_qn|xQuZ at obQy=CphKj?~C*{-UOMpIK1oS=UX~5HfrvXm`o(4P(cpC6D;Az0q
+zfTsaZ1D*yJs)70T|J=u#zy9g3p9-(5dHl=R|2O^h`A(z-%F>3gNv#36f9HO69MF4q
+z(gGg?c>8r0;C=a{z$)MgfVXE)0o;FI0JvX%4rl;g1b7zkJ%D9j16U__&yTIY^xhZM
+z`(er{-Y at gOj`7nqK`jHpdHuT}ob_JV8NyO<u{JyjVC#nB*@RW7!&i{v?$Z^*ET30m
+z<T#j*Gt9G(hx&UuA3Airr?b$yC{lZYkK!1x8+^?;^y|b;%5L1JwBk;u12zXcajz0V
+zY6PJu^1EcO4(&nS9;A1GvPGxwM+qNCX`b^m;Az0qfTsaZ1D*yv4R{*xG~j8#(}1Ue
+z|8EU&Z_2$W_p97fb1%&uE$_Q|XV3e3?o;_Uez_0lo}72{+~afK&OJTv@|h2FS^bwv
+zxqs&#pH{4EfVBYg*TdfcaMw)BU<GUhHUZ3Ugnuuv8Q21B1-1d)n=}6gurnWKobcQ~
+zrvaMZ at fQvXX9)bog$>iXg}4R at 7;X(XhN`MLnnb>@pE$sPQ{ksSr|lcIeog;n)ccS&
+z%?!9s7}aHg+jWcaS8QDQ^lzmco;&Hm3oioGDq6tOdi8ePGRz(WjBXunr3{{Px$;jy
+z`!+0O%k6V-r5w_%Mf*8lId5;Z{p91{ZKeyrn37h(G{I!w^Y;g1x=u`)wdHrH=RUXI
+zhW^*F7%m=gfjKQ-SbbU`pX=5_^nVWp=j9tXE29Bw8s>Dva+)~{a<!1p5zqB<A^LYE
+zIZ|oIorTRb=VD?(@*6Pv+_ujrzb!xSTt6!E%xh1!$*VJtWwf`B7HjbTD{SD+>cb13
+ztu9}?`Tj1mU+YYbOiozIto|lAHb|Q`B<ab-aM;Zcx5yi<FFd at Uq3jXA4I20x*N%qU
+
+literal 0
+HcmV?d00001
+
+diff --git a/sot/source/sdstor/stgelem.cxx b/sot/source/sdstor/stgelem.cxx
+index e0d738a..2ceea4d 100644
+--- a/sot/source/sdstor/stgelem.cxx
++++ b/sot/source/sdstor/stgelem.cxx
+@@ -412,7 +412,7 @@ sal_Bool StgEntry::Load( const void* pFrom, sal_uInt32 nBufSize )
+     if (n > nMaxLegalStr)
+         return sal_False;
+ 
+-    if ((nSize < 0 && cType != STG_STORAGE) || (nPage1 < 0 && !isKnownSpecial(nPage1)))
++    if ((cType != STG_STORAGE) && ((nSize < 0) || (nPage1 < 0 && !isKnownSpecial(nPage1))))
+     {
+         // the size makes no sense for the substorage
+         // TODO/LATER: actually the size should be an unsigned value, but in this case it would mean a stream of more than 2Gb
+-- 
+1.7.11.7
+
diff --git a/libreoffice.spec b/libreoffice.spec
index f7d81cf..150d3ea 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -172,6 +172,8 @@ Patch54: 0001-Resolves-fdo-56009-fdo-54695-Calculate-positions-of-.patch
 Patch55: 0001-Enable-NPP_Initialize-Shutdown-again.patch
 Patch56: 0001-Do-not-move-nCurUndoAction-0.patch
 Patch57: 0001-fdo-48442-fix-default-hori-vert-frame-anchor-during-.patch
+Patch58: 0002-Resolves-fdo-53909-STG_FREE-sector-locations-rejecte.patch
+Patch59: 0003-Resolves-fdo-57532-restrict-page-sanity-check-to-non.patch
 
 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
 %define instdir %{_libdir}
@@ -1059,6 +1061,8 @@ mv -f redhat.soc extras/source/palettes/standard.soc
 %patch55 -p1 -b .Enable-NPP_Initialize-Shutdown-again.patch
 %patch56 -p1 -b .Do-not-move-nCurUndoAction-0.patch
 %patch57 -p1 -b .fdo-48442-fix-default-hori-vert-frame-anchor-during-.patch
+%patch58 -p1 -b .Resolves-fdo-53909-STG_FREE-sector-locations-rejecte.patch
+%patch59 -p1 -b .Resolves-fdo-57532-restrict-page-sanity-check-to-non.patch
 
 # TODO: check this
 # these are horribly incomplete--empty translations and copied english
@@ -2347,6 +2351,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
 %changelog
 * Fri Dec 21 2012 David Tardon <dtardon at redhat.com> - 1:3.5.7.2-8-UNBUILT
 - Resolves: rhbz#810739 Incorrect displaying attached rtf document
+- Resolves: rhbz#876606 regressions in MSO binary import filters
 
 * Thu Dec 06 2012 Stephan Bergmann <sbergman at redhat.com> - 1:3.5.7.2-7
 - Resolves: rendering documents in browser plug-in


More information about the scm-commits mailing list