From aeb92985f58629a112b4d1f4d105de8c372735b8 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 5 Jul 2024 13:57:16 +0200 Subject: [PATCH] package: add unit tests with invalid zip packages Change-Id: I687028391833ea48884912b0e5f586b95eee3244 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170054 Reviewed-by: Michael Stahl Tested-by: Michael Stahl --- package/CppunitTest_package2_test.mk | 3 + package/qa/cppunit/data/casing.docx | Bin 0 -> 6445 bytes package/qa/cppunit/data/dd-deflated.docx | Bin 0 -> 12576 bytes package/qa/cppunit/data/dd-stored.docx | Bin 0 -> 12574 bytes package/qa/cppunit/data/dot-slash.docx | Bin 0 -> 5608 bytes package/qa/cppunit/data/duplicate-files.odt | Bin 0 -> 10091 bytes package/qa/cppunit/data/inner-gap.docx | Bin 0 -> 12289 bytes package/qa/cppunit/data/overlap.docx | Bin 0 -> 12687 bytes package/qa/cppunit/data/slash.odt | Bin 0 -> 10093 bytes package/qa/cppunit/data/two-zips.docx | Bin 0 -> 9960 bytes package/qa/cppunit/data/two-zips.odt | Bin 0 -> 18144 bytes package/qa/cppunit/data/unicode-path.docx | Bin 0 -> 5720 bytes package/qa/cppunit/data/unicode-path.odt | Bin 0 -> 10207 bytes package/qa/cppunit/data/zip64-eocd.docx | Bin 0 -> 12251 bytes package/qa/cppunit/test_zippackage.cxx | 390 ++++++++++++++++++++ 15 files changed, 393 insertions(+) create mode 100644 package/qa/cppunit/data/casing.docx create mode 100644 package/qa/cppunit/data/dd-deflated.docx create mode 100644 package/qa/cppunit/data/dd-stored.docx create mode 100644 package/qa/cppunit/data/dot-slash.docx create mode 100644 package/qa/cppunit/data/duplicate-files.odt create mode 100644 package/qa/cppunit/data/inner-gap.docx create mode 100644 package/qa/cppunit/data/overlap.docx create mode 100644 package/qa/cppunit/data/slash.odt create mode 100644 package/qa/cppunit/data/two-zips.docx create mode 100644 package/qa/cppunit/data/two-zips.odt create mode 100644 package/qa/cppunit/data/unicode-path.docx create mode 100644 package/qa/cppunit/data/unicode-path.odt create mode 100644 package/qa/cppunit/data/zip64-eocd.docx create mode 100644 package/qa/cppunit/test_zippackage.cxx diff --git a/package/CppunitTest_package2_test.mk b/package/CppunitTest_package2_test.mk index 546da10deda6..206d8c7e1fb8 100644 --- a/package/CppunitTest_package2_test.mk +++ b/package/CppunitTest_package2_test.mk @@ -13,6 +13,7 @@ $(eval $(call gb_CppunitTest_CppunitTest,package2_test)) $(eval $(call gb_CppunitTest_add_exception_objects,package2_test, \ package/qa/cppunit/test_package \ + package/qa/cppunit/test_zippackage \ )) $(eval $(call gb_CppunitTest_use_libraries,package2_test, \ @@ -28,7 +29,9 @@ $(eval $(call gb_CppunitTest_use_sdk_api,package2_test)) $(eval $(call gb_CppunitTest_use_components,package2_test,\ configmgr/source/configmgr \ + package/source/xstor/xstor \ package/util/package2 \ + sax/source/expatwrap/expwrap \ ucb/source/core/ucb1 \ ucb/source/ucp/file/ucpfile1 \ )) diff --git a/package/qa/cppunit/data/casing.docx b/package/qa/cppunit/data/casing.docx new file mode 100644 index 0000000000000000000000000000000000000000..d8d0dffc71a65ba0b63d096f86ce946670833d2f GIT binary patch literal 6445 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 Mzw4Dj>c@ir2mQC2lmGw# literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/dd-stored.docx b/package/qa/cppunit/data/dd-stored.docx new file mode 100644 index 0000000000000000000000000000000000000000..41c19338821d294da45109773b050fc4d5478416 GIT binary patch literal 12574 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 G3jP;cXqs^V literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/dot-slash.docx b/package/qa/cppunit/data/dot-slash.docx new file mode 100644 index 0000000000000000000000000000000000000000..d50cabcbdee2473fb002f4ce106eabb425a00cf4 GIT binary patch literal 5608 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 P>s&$o-l3R6_9N>*g^E9# literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/duplicate-files.odt b/package/qa/cppunit/data/duplicate-files.odt new file mode 100644 index 0000000000000000000000000000000000000000..cc24f7024ad13e1de7c1fbfa9f572966d9113d05 GIT binary patch literal 10091 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 Hd${^vzzJXw literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/inner-gap.docx b/package/qa/cppunit/data/inner-gap.docx new file mode 100644 index 0000000000000000000000000000000000000000..d8e9a232465c51606c8eb776c61f732d23fece11 GIT binary patch literal 12289 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

^n1=fk13x$1S??UZJWGnjFdotlbDyoz(LT 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 JKk literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/overlap.docx b/package/qa/cppunit/data/overlap.docx new file mode 100644 index 0000000000000000000000000000000000000000..2d5d115ed800536afa07c60f6798f379364b0718 GIT binary patch literal 12687 zcmeHtby!tjx9+BqZrC&kN_Tflhje$RbV@f!gCHO!tu#oNAT8b9Atl{+V;t1;`@Z{~ zfA2l(dFI~hS!=vA#+-AkcZ@mYr63?N0000iAXs);z_VN8r2!ZKfB^*npo5-j3ftN^ z8rwMPD!JJiJ809nT3c1c_u8~EpopF&Tq4KRC>v~M6;gqR^Ci;4UxIyL1}l2m%`AU@ zB@3<(h9RlI9)mV>hQFXj7?C(&0xxdnM=#pE8H&(=lyErmyg^Rqn@0=@r7k5NPrLyX zg;@JeQL7Oq7_-i983uFKIWhS*kRwnuWYH}Lshe_nf+ay=OO6%FZDwaqf`G?2FEs^$ z5uZo!{d!{g2D!J+8?sW0^3Nxqf|TJfvspDz-}D5QI8$5%$shDMBMnG@!W&2VMw|(} z0G6tsb&ioK3bLt$>LeH#qpapr*l)!Z0(Kcb?uF<9O&-_ALgzL16qCqB#;jd0O0>A zXk=^XWDT0e`}w20hrW;fV$sfk(7Es5=s)E3VmOjfEKR2~VEKbvO7=)AzN+NimQm;1_S^|rOnRe8M{&J3Sa;L z%wGy}G&8m~rvLuSc(0zZ1evI529%)vgi9jQg?b5bK_6J^o?v&i0+{MX#Gq&%|}aRydKw-t_P9{CJE9K*C;VQJ;goAG>YGD+>Xqp!L0?> zTc{-z?XyyN2KZmTZXNwvkOB4~$sLYz3Qtk4UEb6T`bK_CX<18w5)9f~8MqENFRyxF zha#FS4~Qd+CYC?dR49#zy-;`VSJ1?@Mg*#AQcG%{hVEjVV6A?hG|)(>Cs%EyK8P3D zd%Wa{)m91hamxYktV#=h^>gdnWBeAGxAj8~03%@T@EJiAwnTho6K_87v?|+(McvU& zj(@A8K|J;(vdJI!<_qu3h~xXamy;_=aotQ|T!-BGOV3=+1@TL`8~jgGyA7kN@jmj6 zVCUqYPt>2=;m~*LY8+Ar)_a>1?PTTWY_Y^mJOf8cm?qW}L<;I|Nwv@r2turrNBEc! zObPX+DGTQO5Y0+(+k|bT`E7?8mn>x5{^H>_5(81XX-+9wer6Geq~p#BRYN3%VRBQTS_3gaKjW+zT)%6@n!i@H_1vG2|&ZA zB6{W?V_j-%m5j4~-er3WHWdb8Wrs{VbE(5SO2e|cj!aQO=9Q%0ib?!8x>f;C4(lsy zE_4GKWxpuS1l13pW)NA{EX|@H%CW9nf2vmf0yDrXy$5yjw$8$(Uzz1lp5F3pY4J&w)4lcf ziWJ%p%u9|wG;;jt&G60jYp=j3xwxT~_O#I@is?oSKalo_hm$CZ*}MC3;%;xi=Yut&T-4qr!%LP|YL{AM9!(KwiQ%=dqPJ{( zTpSz(KpajWrn#pL@hRz29#dSn)|@>ZHvE#qQC{8Sxxku+BcV&tPb*r?uM`P|fJUjb zqOrdxkHKsZ}&Z0w= zqOn`5?$et|jQXXj_7z6YswVSQ(c6m?MH)pmWD*Y5;HTO2D9OIZ^yhw<`soExTV57? zDRP%z-bEbsX{J^5VH+^{8GKWM31D9-P>WbBTASe5IS;F#xl4IOaVCvb@THL&D~a8` zqM&Z#3!vgaw50(UUNLmuyHQ3bc~Ya0lS8L>QRK1~%n_KMmaqlgRUUHGy}5~DkGb80 zeOEh5$p%!$CR}+3d;V66kl%#Ir;?37^-x?Zlz5S9tiS5>&XrOZ2HFdz%j0gXhL~Gs zWD`ylY9-?m2Kc7tOCAMEh|0SX4p!O2SMu07D3(TEB$k6a@QmSrJJ|$2CFm?8b^BbA ze(u@8O|R}=KNXZ`HzcpFgj0`$&j*Q?EBQaEdxu2bknmLr9m83n!dzE9UW5kNAh(10 z%=kM17EhxI03UgyVL*@e?;pJcJyOB}ye1a3-%`v8_9GWZf|82Hg-ax6#Gnz>piuM6 zkuQa$%+z~?Ce(_SBRqxj?ZZ+T>P9>NE3D`1Wqq|tN2=hiSP-sLKDi|F{q*U>lY!th zp4V^03@yuGtVFJ)Yx*?J-9x=U)TyLvxxybRC=B*GL?P3bmWrZFpK{p|!f4FFMk*={Zfd5P7k4EU zKBJ>3r!`>6VQa8-=x%71*tQW7J2-!yKVL(Nz=?TIprEo9i(cu%N+;;Ax{{7Sd&94V>B)Cce;!DW!*`din8ac)<8KLvgOouIBE=eh=cUnz2D60=f5gilwn3 z;m$6{+x%87aRnmEFT+SO`f=qcMYa8%-*2w@Yi`yQblxbt5P7v&y~aFB6?1{ZjM+aLTlJZfUZOV}Z?LI>e%<;!Qzy7`nkc)w|B?K>@KZN1eF?4DZ@=0FM?#Q#AOs_ zP$=@1Wza1WnaD2Q9chL!yEbzycb(WYI{Yxyy{w%b*HJI_G~6Xp7Hc0jjb=WIo~KDo zz~k)!=lmjZ_zg6SI&{9vV;)I85{1k0>3Tc?lBVG6P^Shee84SV0(_OYbSFW$IrO4D zy^gqtD>jxWrWA%VtKL(I6;omXgE?Ij6!@cb|8;yX}npk*D?-TA!~@ z@eV8d8mG!XOXVvzG7W^4921!)k36n={srzsO0xKYA^bTlvIwejZmY@2R`(u8S1Q-d zfdkwPK#c8?oc@q~9(+Us3t#oMDgWmQ?MGG@`o?EpdP)w<)+WLwxP?Y1pRGJL-tDW- zJqE{0@i;%`s#vq(Z5fdw9IygvDIVwh(S}-H6O!sP-vxQLy`dn&s?2!TwjLfUo~JH{ z^@dv#i=dcS-AdN2q}XeBowUrW)_HuoNrXGxMmH;MtcHGQfN3_#%#?ReqVf&H8F^WO z5Us6P=9T?aW#&4rK)`_2H+gi#OyPm$NNdQ+*-F}ZHLN%O)g5@f21l|!_M+a{2#h=sRQ*W5EZ16zZCYpd$CBDNRT&s5^P|>)+EH@^5GtIKDEPR^Xq*o^}6;;3m znR%@+Mr%+i*HqiN()c;~Tia!eKT&VvR$5(7AJ_(4NaGH-@t4j+=xK==o0FtPRo(Yr z0_(YF-3#UL%<9IfSBBl)lbr{Vbb_Bd$J0&h*w#y(>K7TAU^b_(Yly{rxDl^z=mU8U zzQhMF(T-%s_d@o7n+9yUoEYmsmh?$)t%f&TpB@P89M!<;Ngu808`}-JqX^JJTXML(h?kUl1`E0=BSqKpz^TQqaLw$ zsbun~2)NjWgoV|r8Xz!QKM zzh`AO+~*$q+Q?ADF*HQd#8+vO`^wPmPMT}ReyEdAY!}HQs9vgHI-buVeO9n@lVkSP zVfL_jeWz=$Imh-fu6RmfyImjq&NJa78vOI}D++v+C8ylinDTg0q+Zq>pFL;oBc_G7 zs#xow<5H>6rJL9_V7Q_569lG`ngM?@VK7osq8ktcUIO`L_ulOf$M&a>IwuLih!VID zwLsG6#XdttI&5VtvY96CUuD z?TaY}UUL~hm5>0<`Cy9t5bRS-ocQ|plO&%-Km*?)g<>%#q@vBler1=}ccb}oq0IC$o<%{_+EYMh<|Fy;)PeIEd&5S3UU_E ze)$U~pwNtxzJZnTy~{ACGG{ZwfYJ19nILP{_QkMcccGKw3@y0%vLDim-CS8q)R~yH z568fdLJctVKCXBl7il@Fuj-#Dz|REOjZ*QJ$?eiFTr@enIEh&s;Ef4`n|HcVT;&SL zGmyT>*=eemk~Nr6AYV63g_o_{^P@Q1{%m5E;5q4X#6zFknIz75A}BV=t^|98;>f&{C#9BKVo0Bh$y02#Crai{ ztVfdKE_tdY&eH={UrSV%B(<387HkOJ%H0!UKObFtq{7hG9{}!<8G`Jv_hQ~j0Wbly z$Yg_CLT}ODbmvm!>UbVw&x<-`7X<9bF3M+d>%aC(+;YTh{v5jX)U1U(2@aGKWLzPV*Sdss||}Sba?6SzqetDx=~x*^mP@Q7y#4tv1*-$6PtqA*K@j>f9Dhr%8&&6Wy=8@pmW zeT{?OP2`WUB+1TJbqJY*LpLd|g#8S!p$!J$i2=q4evUci!0Q+(8Jh19X;L+cQ5|;B zhs)T)Ng$!o9`b22cL-)t?7gJY^u{3-*xHQ%d5gS11J`r%O8EW40Hn>K9JHE>_*Z4j zpBkn)ijB4jgAk27oF7Jw$)$G;5*aQIB7k92O(3*)Og2Ln zY_vumQX%Zv>C&JBA7SumQPC){@sG9@oz&QJiWT9S{Pc<>#8fg>^|hu*>QV+4#>#W9 zOoD{zLykz5-fQ88j@S(Ev`Xk(N$K&|EO>DFvyqA1{nhO=;ns;Ps{IvgxOdPJfN1wu z$AZGnopwGW`*W8s%7lL}p-=?Il_cBbp*Y^62#4Oj0L*ZF|&E`+fCu}Q5Ha$1k4)pUFczy zH*>hItvQ_2KgVgBz8HB?rcguGv;@DYj3e@hf4b6qCO#)*w*p#0$TEJ;7*C`+pfrUw z_^bZiBVX;eK*&19vdfiT#ZO_O!S1+XFJkGkHlm|W`(acWW0^$E(b%Oa<`|wYHkY>W zBPsi;*6uitVgGBDKKfl;Rz*FbqGdTqK$NECMIFa zi_}kT-sNc~Yg;a;HyE6`q9BtJcisp^c}_0)O!BZ2xEj^tQvad? zQr~{X>^zZ2kp#U!QyZfGm2(6{7AoP$m@NTD%m^G~<*f#Z!k$=Eu4^dxBf{p!HH{cC z`7N%fm`r>F`QdTtnU*KFNr=yjA-eb8lR5jrG_r**4C4=5Cr~0`?LYd0XO<0Hg@sGz z`u0PMG@)5+2Yi-rfvNm<{uzNA6@%RJ9*daG1^kt2-JHu|;u`durhW#%GX=AHi(*BC zNCLitDr;`bsx(wi$QPqkt7PD2EJEml!*3+1{2h>1rk=o8226RXNJ>vDDGF!I0lD}^ zW0J7j0ke2(6o>sVv{d>+k52q!GF|0!$ZbA)v|Nl+B1&>20N;Lo>w&{A>ov2J(qrSt zwf8c&F{yL7|AcnFsFQ$X=B2KWlmS@TZ54z|VFqkQXQ?nr8}3a7<9tRq_119sv||Jq zTU{w1j`#Vyc=)=*gB|okGl2os4b{@HBh~2sb@xWUX(6sf<3+53w-+824JhU|=}ior zs9rprfnm=}2%@dyVC=Yd!KfKF@cbnJb;IG6dMYL6Q@|r`tHKzUL531Zc#W6*b{Ex( zM`QV7XY(5VCy_J)__O5U9W9@8>WxXetmAC`69Q^^{czQ#?W*z1|pn0@M_;2j1N-SRNp4#xTsmGJs<2XA`?zku99j<_SXa}F?Q)L zy71}eMzA5=p?iI9BE|)g5M7h-YLu2rZS*3 zs&0D=%)0pYKZ%r|6qiY%2v&(<<5bl#Y|;K&W>v9wI^oi1s*y!Ogk9R-_vUO~?+UaH z^8F!3g8cj1jDW#laTxY=y)>SlAJtQXeal4FbD+D+54xmXYcH<1+TL*viZPf&1Vle^ z3Nz6+elMBbH5m5DAkj||5gM*OhnSQCPF8(YU}K0%cG)?HMcxEqyq@%%fb?X0C?_t( zlQI=B4HV17j9zh+M%z*FAi-`^h{yF=B5IHzy(p@vO*Tz2-z%Rm{e*~sF~)Rk1Rdjxof-Kbr4cNP~5S2OyI zt?PY|SfnGy9nN&xY?Rtd(`H|FPqsLdc}RwttC=tgwqb?!LPo4ltYt=@oCavqn53w# z{8zj8q-062S;zx@Gq$uT1>>|Mr?twFwCr)u5z%Z8zD^6iJhmO<+jFY#bRhhAEU--z z(cVRWlhrQN4>$9Ei%w&~rxKc9Rco52PhBvj4!IzdCRpSNc9iB@U~Q#LN6j{gXJ}Mg z?WheJvQ0hOdo-U$eqc?aS-6Pn9_Eq&ny<}uLtsh39yez_-|3sa&t0#qcOvyiovoB> zZ~Re_Y(vK^=Gv4w_;^3RuuP~=)C4Ws`vv>($+Wfq&Wj^sWu)2}@PqgL7BW}o zpKPT{nsLidb^9)g9Ad@ZRT~@$#ZK+cym7WB==1-)dbZk4Pv5bek+O=HS`tZz+7Bx! z0RPysk#=atJ$XL+6U+y4+lU}Eg4S$NCog5#-hdYe%Mno676%e6=3fG6hv*=C8BPsg z!meo0xPtIjFpyttR!`a=cGUPd2-%eRwU8s@yR?nUim_0-1F47P`-0_@R{oVX?5Mlr+MdwC)d+NtnZy%RKewy z#fNM^2S5-CJW*(oor&ze`g&;ID55O;?M?jbyZ8@Bsr{xA(Oetud6Kn$D5NkpEP3cx=4vNE;ayHBRb!%MHD9|grhs0#tN-w@YP z4MgoVXT3wi_C9Uou(ahc#MANbr)Zz>-A$luK6KJ^Ye&Q$*sybB5x5;bn6{g{PF+Bu zj$hFpI*mpR+V`=B+9y6+FvZ-bVer%~olto>nMOAn#(lnaM+c*G`rfiSCA{dQzNj^w zwrWqKHEo}M#ScL<5}Ag^fZOg`#|VN z^Lf+^aULl~hhb*A+rW6PZLeqPaD8zfxg%pVZ+mVdZO*hC3~O6+ZJ7~T1Tm&R;O@kK zY(v_=n66H%njQ$j_v6^qu*U#n!OaXM-jX3tXypt(w2Fh$XtQdfAb({T9;J77f&D9CO z(^eyj;J<#}12yM*eiG`+LX5q0&Ximd1cy&Lu`_0YTH>GNtC{n1ov81dbWW{XlaW2? zrK>$0=DT@e0X7-JmaR&d;+E7B#3x{z`1eFbcc`3s{cKX{@qUK>d^}cV!<@rCQR)8& zqGI@+sQBFz6`y;ef-8p;*#BB?Re9Vi8`bjL{vMAlX1QB+ikStV6KvGkkO_uGd?RgW6qM#JqfLh8V2i zjA8UF8)4p0$Ck0@mH$^)5OV=Gj9Y8$>os!3ePJkF+FX0LtW{O%a|3%$t)SX=h+cmE z-Q#-5b>LY;IsRXw^8YDOQ6ZdlCf6Vbcz83}&<_f!VOK!)e<{B3lQ4HGsMWuKkY4y zn?Ent_GuQ}V|BI6waE_jSHpMaheZm~v^o0jtUfGQR#eRx&i|aKKM(pqt`R(W)Y@DOLp}Ev{&LkX zzKTEDE;n=Uo#uf9$IvrXIlY-`3GN-sfLloKVx9TR?9Qs~y)cMExYny(ikcRl5DM5$ zw|d5@zV!47DJ5fbXY9PA*U?UiL!M$I#}zG)S&R1rOp~e;`0!tEN1Nw*yb9uMhNG`} zFUXTFw#oInup8`FmpyhQbhuvOQ{^2AHg%GF)?a7s z2!tmBJJa@;gpi^aSc(~?YnpoiL(e(K6S9JPdk6+;O$jh=J#{Juz(rmBn&2;tUFwvm z*B9ly$zaq^+p0ACKStd~TeOV48&6y8ySQ7s>SsGY-#r%)|N0h)&Lnf7FEcOJeOwh1 z+bx9}`OF-XRw6}&gLarPT|X5=DlAC0DSw9h8__Qc@`I_QVD30P1@XZ9@{6f3|ISo? zh=JY$)F6M9Ut%mj#K6EY01vz4@3g~v;KTI~Nr>`NVBm0oe~!T2A0s?maiC52N6Orv zE&rV~_W*486ZpFq{QY?1z6-yP;qUCShnnU9r#oulJolo@8 zw&^e6Lw3>M;J=Sx9>6a^T>rNNnZJR5pGrIclR&=M_wN32M)B{4dmlD^xY$7HdEfE> z4sstxeYn&?kY8Dme@@KbVbuqW7YOszj2Ob|_BOuss zVaPwb`!~IRfaMVV)XMK+$%j^dcn5zoqX&3C=}-9YOZjj3-`}YRxH|c7V>SHgUjGgM z+x$MjTc7*}|LHb9p#RydJfNRa{Lt7>BLnq)?$JPJVSFI-;skox37Jl=kML08Kc_Q4 zRCs^)zjg)izjo!nCt3eLYFGX~;CR>zmmqWW-P-;;yYhEv_yK+g{15EP-+{UZcqu4X z{lN(T3%l}n0O|pbP52x9U)Ytu11k?`FOW&Sx5PigEWa%A|Ii%$3A?ZTch>XJn(R+2 V_LBqsuwwTdq8Mbw`f2V3{|_Trx%L16 literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/slash.odt b/package/qa/cppunit/data/slash.odt new file mode 100644 index 0000000000000000000000000000000000000000..22c6443499af09ec072ede41de2381bebf21ee85 GIT binary patch literal 10093 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 JswcmH`d{J-U^oB( literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/two-zips.docx b/package/qa/cppunit/data/two-zips.docx new file mode 100644 index 0000000000000000000000000000000000000000..720189b20ed9060aaad25a6add7890807579ffa5 GIT binary patch literal 9960 zcmeHMWmr^;)&@zD7;0!~L0Ui>>6jUDP)a~bKzat40Yth(TDl|zL_!(_0Rd@A=?)Pj zL_oSO<30C?o_qcGeZN@qJo}j+d+m7FyXxJl5DZK*G+bOV zmj`t$h?)dr$l&{}ACk#^tr^t>M5e5T;?|Pp5&<5S)X0fTnJ5;(*BOF&q7@oCS=bg` zeUUY#Qn?hds}FmNEOb<9Z`yGZ4tc2aC=jp z$2Qh6_w=BRd}MCBT3l|^)da-a6_GDzK_sLM)YFzORDLy=HLIY7SGHg% zVaB2&tKnZU^a|5hu96|}a4rr2<2sXZhjw7mc0qM@&SPj(ke95R|<#biFVBM)onM8glFfOM}@Gpn;)dk8LZPZ z@f0Gbip*vnV*6Vb=GPc0ohXYuAkki(XhcMuJQ)T1t0Ow1C~It$rfm(0lost+hn-mN zyg3aK4C7T?CK&6W-g&$4;yeJPGyGUS>gIZ>d{P<1ws@h!muE7-u(QG_#z? zv$G3g-k(bap`}PM9SelW+SK~zntd)R7RL>O=M0hEo7UfLdqb(ARCIGZt16Y&x8A6f zJ}&g44=+%_@`6&X;Z>CD>p5r@wdy=(ywSq@S(-phH*`CXl;p$&+dX++VZkr2K46<8 z_=I_n0);eB&NUydGo-Kn5oy{pq@CdQCcOVH5@$)_U}FkHq5%JQ!MN9ncZT}gLvo{a zp@QH*!EGjQtz3G*$2E*`7M8rFX&Uu1@4$eoWC=~1F^Nld(J*FnGvQk1yB@m2g0;i}%M$Cr+h++| zoY=m}aM)`yF6%iCyj*l-xj}EE78}}Fem95krd#n$Y9aSQ8oQn!%ZyiM8pcu0v5E3w zzj?<(db5)^#Wv@AWG`U^`;lqAAKMmZqjeiDnWGEc#H`QlR4T>mry@nG*eG-yO^fqOBnszMWMjK5BdS~CnoumSGs|I`6y@e|^0vwhBn{&%Oo?F? z?|gSvnEq;YhW(uRi)LS3A+kafr6L7DfuICe2+53ho*iTI^#^*Ki~)WGRH`MwJ_-vl z7Vea|Sl4olrpSuk7j7MnFJlTzR@LzCAzrx4<+)N?_noC$Z{0d;lP$Uq z%?;ks9V-jW0n7cHdNRXFx4tV7fjK1%e0x+DR(2h>pFBEktvT@6tnt9ezvfBYJlrBS zgQLP0BnHZO>li>UHA9B#i!cpLf|{~ZE`uB1_eXNr$`0J zy3_88HU3_USH8}Wa@f(lSc|9SSe^|+J{o}4?Ao4Z;nUq?RE|K5G%$(@hy>h&Ds4?v z>d-W5-Fs>%Yjm!0W`+J@CI2E;!e;Luykip=EZy~c+tvsiv~p)gNfXLLEKGa%k~0m%fWTcQ`=2?W1P(%eJWTI|0s zQeh?@y}9D#Xv}V7`1bZ3ghVP%TxwS$=g{%VaN8=dfK-Rv+5_Ikul^uTmK)E}&Eb~F zqlB$AaDcI~oh+}+=H16Wp3SU^ ztm4E>gnC`%euM4fXki92i0KZI6W&d4-8JOGZWYX4Ps7`oOX165)81g4dfM!3#(vLQ zi!RS)s&5Z@UVO___BSP3<)6%NXk^qd z;Dy9j>F`$Z`NFUBGOYorg`))a=$<$H#M?*6^kQQ6T6@pU=T^Bkb66~2a(d*+PRc(& zVDPwb;XHY1sK zBI3UB?vf8_?4^hgi=eB!LJrp_U~w}Bz@%u^j)Zhc6SewDF%~A?scdf5ORC2OFWH7 zMi@W|6~!rv;o6*W10dfQHQsMGF<&7KzxMGkS3QMO#5g=Iu{Xg%)+z(Wvw?w$LGzRi zw9T%ioR>NNSX|kDOCKs~S~W=T|Jfw|6nE27h_X6>gcCpeYy7(wQ%&Am)6-xAJ80pX z-QsSK?UtlNJpA`^Z;$OyRrd4BQ;8%_F;Td8bA|eeoE49Hj6dQ2ceg>9B9Rs_vmfQd zG(r;A#E0*zRXR13 zt5uNcjKq+WQQ~h4JSp3X0*__(K&w19BKGdOx}HW)hZRlQvluD)y7;8PcEcIqa`hz#3`xQ# z_OAVl%xYxq8Z|)uSC!-|L0^o6n6bN}=DS5zs_^jlUpnW7t*kNOk3n9QTlEZS>)*;% z0tm7m@;jWZU)&oKMnQ#|>9 zc#1SPwK3)WalC;lxsx#}@NqtT|Mf$1@2`1tRhRo2?%d$I;>cbkS20PIP%)@n!kD|Z zxt`N@XYO@+6QALdYml;}t3q%{ZS`q7i?gD!LM|!w=+MYx*uXN>PBZR&8mua`i_gX1(^suF*yrc|80JhwOGQ3 zgiGlbq;Pk(x)1yfc50h!eq)17*sLPYtGVS(ulJ?7h8bK^9$sXT0!b*0JoAB+&NFT$ zx&d5#3Ov69Qrz>~cj>bjdl*Q?E)$uqkk_E~6TIP)AQ(pbVswx=RW?LpFIkI*wpbTE zJKA??4m453{Zc>d6QE~3t+Vp`JUWqGh~)8J$28%dUyjQ`rIx$U%>E=@{RHUBtGF#< zcWQ-^SqydMbfQe*FtY=1ldL0&;GRdsTss8rS@*46mmjZ*H4P*(V})mpK4B0X?s<9b z>wP2a2?Tuz8VJNn%UhA=D{(+}eHM%IX}9neQjm*S=LU_d?>f{3XRPjO``UAb68$;w zlCVzmO}inOx_Oc%jciAXIM}r)U0D|#39A*LM6U@^(AZ-o2#!k`TgE&_UMdO1$M-ZWWDB~lqbD5ppgUc|N0{c1dvY(6HG&)hqHWC+cb~Z@b>w@9 z#+$ZH@=9oZTpwi0tnr|KWSp?JwRS36f82O~5#EVSzf)>6d9G^(vt$3bFH}RP=dXf)rXZ}VjSi9Sy5S!{FC!Wg#NQpWHfID z(AB$kjKYMGS4|S9W!g0z zl)nn^RV`#BvsBs`$dmhO>q5FO#aiU|>!i1F&9m;Vc zIPL(S?{ZFYeTO7ovP`v|yo0Cw`GcQQc9B=zdyu)~XXgXu#&2%~hUTs8BIxvw(Dl`G zfT8cOF1Hf*9V|+##YSN~$tMHz2R;Qdgqe6yvQ;m9yt7qG2-?kc% zvW;kvJ$u3zKr~K$w69iH=d(u=d1XiEbk2tcTvU2>3f8VTU#UQAdU;me=V%Pd!Ju9P;1vuW5E3L688I*&d;L1zQ(OHwEnTM z{O*2!3P264KMjuam;2B0^>^ppxY`|pr2|t! z`!b$lW3OKI%w`YbHlPg4ugY2Pee&kAYE_pa+2RIDa|?(5rMcBS+GjEjDr=1C7_!p*O7ZFUA?3%U_U&`iYl=zXb9VHZX-nWg;*NpLOlq`C(TwhNCs0l?4g-UCL4nGyo!5V3jwa5mQytN}XTk4X1k$E16n;yL#^ZcA{i!pGB;G zhDNTU%TSVgV4pM_ut-=IGiyuCb2jufr)_D7_^OQ?vJB_CZJ@|uE)}PNZL8I2+{X3^ zh4T_}p>rV^7FlS%bbMkI6N)}95~0zF*BW8?u$wEszx4O{WO#c1t<=hvT|0B)qUtB*_!vFvP literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/two-zips.odt b/package/qa/cppunit/data/two-zips.odt new file mode 100644 index 0000000000000000000000000000000000000000..36d90cb9d4d9d86429fa3fdffe501df8b2d59893 GIT binary patch literal 18144 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 C1CR&+ literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/data/zip64-eocd.docx b/package/qa/cppunit/data/zip64-eocd.docx new file mode 100644 index 0000000000000000000000000000000000000000..1a4dbd0d16b10274a4bbbca78cda9b2bd54994ef GIT binary patch literal 12251 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 literal 0 HcmV?d00001 diff --git a/package/qa/cppunit/test_zippackage.cxx b/package/qa/cppunit/test_zippackage.cxx new file mode 100644 index 000000000000..624457ab7bcf --- /dev/null +++ b/package/qa/cppunit/test_zippackage.cxx @@ -0,0 +1,390 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include +#include +#include + +using namespace ::com::sun::star; + +class ZipPackageTest : public test::BootstrapFixtureBase +{ +}; + +auto const ZipPackage(u"com.sun.star.packages.comp.ZipPackage"_ustr); + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testDuplicate) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/duplicate-files.odt")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testUnicodeODT) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/unicode-path.odt")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testUnicodeDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/unicode-path.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testAbsolutePathODT) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/slash.odt")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testDotPathDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/dot-slash.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testConcatODT) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/two-zips.odt")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testConcatDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/two-zips.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testCaseInsensitiveDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/casing.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::OFOPXML))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testOverlapDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/overlap.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testInnerGapDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/inner-gap.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testDataDescriptorDeflatedDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/dd-deflated.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testDataDescriptorStoredDOCX) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/dd-stored.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::OFOPXML))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::OFOPXML))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +CPPUNIT_TEST_FIXTURE(ZipPackageTest, testZip64End) +{ + auto const url(m_directories.getURLFromSrc(u"/package/qa/cppunit/data/zip64-eocd.docx")); + uno::Sequence const args{ + uno::Any(url), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + + // don't load corrupted zip file + CPPUNIT_ASSERT_THROW(m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + ZipPackage, args, m_xContext), + css::packages::zip::ZipIOException); + + try + { + uno::Sequence const args2{ + uno::Any(url), uno::Any(beans::NamedValue(u"RepairPackage"_ustr, uno::Any(true))), + uno::Any(beans::NamedValue("StorageFormat", uno::Any(embed::StorageFormats::ZIP))) + }; + m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(ZipPackage, args2, + m_xContext); + } + catch (css::packages::zip::ZipIOException const&) + { + // check that this doesn't crash, it doesn't matter if it succeeds or not + } +} + +//CPPUNIT_TEST_SUITE_REGISTRATION(...); +//CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */