From c28aec61d4cc9a6657ccc92c627983a13ee2dfaa Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 6 Jan 2026 23:19:22 +0100 Subject: [PATCH] Avoid an NPE when reading broken SlideShow-files --- .../org/apache/poi/stress/SlideShowHandler.java | 8 ++++++-- ...7ffe3cabb976ebc593dfe2f9461bdeac980a626c.ppt | Bin 0 -> 13312 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 test-data/slideshow/7ffe3cabb976ebc593dfe2f9461bdeac980a626c.ppt diff --git a/poi-integration/src/test/java/org/apache/poi/stress/SlideShowHandler.java b/poi-integration/src/test/java/org/apache/poi/stress/SlideShowHandler.java index 305793cd1e..9166094540 100644 --- a/poi-integration/src/test/java/org/apache/poi/stress/SlideShowHandler.java +++ b/poi-integration/src/test/java/org/apache/poi/stress/SlideShowHandler.java @@ -29,6 +29,7 @@ import java.lang.ref.WeakReference; import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; import org.apache.poi.sl.draw.Drawable; import org.apache.poi.sl.usermodel.GroupShape; +import org.apache.poi.sl.usermodel.MasterSheet; import org.apache.poi.sl.usermodel.Notes; import org.apache.poi.sl.usermodel.PictureData; import org.apache.poi.sl.usermodel.Shape; @@ -76,8 +77,11 @@ public abstract class SlideShowHandler extends POIFSFileHandler { } } - for (Shape shape : s.getMasterSheet()) { - readShapes(shape); + MasterSheet masterSheet = s.getMasterSheet(); + if (masterSheet != null) { + for (Shape shape : masterSheet) { + readShapes(shape); + } } } } diff --git a/test-data/slideshow/7ffe3cabb976ebc593dfe2f9461bdeac980a626c.ppt b/test-data/slideshow/7ffe3cabb976ebc593dfe2f9461bdeac980a626c.ppt new file mode 100644 index 0000000000000000000000000000000000000000..439a10364895bf3e3effeb6014e6ff12a30b0fe6 GIT binary patch literal 13312 zcmeHN4RBP|6+Um@hHQTDEd&%5$%7&w0!Cs{i{hq0gcgPjiPkz%6UoMG4cW|QAs||p zN)-{>SSXU}UvplM>t{&@&{3Pq6p zhK?c)d;wX9C2Z(Mng!72*? z`TH<#8I=a2&9wdwxBe-2PuD+V1>?%`zzM*Kz;NIsU<6PI*uY3&6!0xzG;lI71{e#B z15N?P1E&HLfQi5);548JI31V_6a!}f-v*`tX98ydX9M2>rUK^x=K|A!^8m)D5~SY+ zrUNs8nLsIUJ}?WI4g4?1F-zVuo3VHddE2DEBM9ER5ZDRkxgRk8Yofn^3`;&Vhv4Nj zdBUP!6v+;Y{=<4pUdWz)6e6eF>iOu;Iln+-{)A z^QbC`8y@W2h6_AAJ{j==%t&4ywqV(32+@TSv$z(ea^@xYr--i!iZHdLGrJg_3T22} zwUwb1UmjSy?NfR3S5xoKUiUat4sFR^^9pv7{iad|%H#`^%W)x4laeAU>&}cyEMaE8 zleR+C~=dbU^;HPo+hfTPzu~!=6ZaNoeH)YeoKMO z8lP80mph1z0!(LR0nKH}ssgGVleVbF%hX>PHmVAQ9oF1bz;Xmdx01IVS-{fjm5-F1 zR0&Mr5GSGN9i=HtcAMLA#&XH~<}j4A+Hhs(==nQs^NOk@mTlt&DpEy}NJOO%?s`p% zi(5rnTcx!F?wHYT{rdH)-M&}KCEi*q9mQx`dvH6=ueBpC9YAq$heWT4C;7en=?99B z=0`c!JO){6G3eG*elMza&CSg!jmJNe;*Ji9mz81s1MLLztGQf!5mHptTrLZPk8^^+ zfp!saVY|vgkym!CRr3F3X_e~p+@|A`@?lo0ofKn^XkSdZwo$ye#NRYh+By7+Yg^^D zcQGgEu5{J+RlC@~4~$!P zez;6(YvZs5#>Kp}J?2jvqv|KxL*1bk<}a9Fw4yrwl~ zR;yBXY#hoA$%#2p%aKGsU6QN%kvZpOi95Cf>EJ}U3+3Fo)?zc_0qa_D%94n98lrN8 zk~(#JdKmk{pv1-$M?NR9B|$zl%H6PT)zE89O9myRc_dHAJVT-wePFBtqlnzDjuk2^ zTP+)z>GgpHSK8sA?XL-h?YY%WVSmUD2g3D!yD7Z1-Y>Gr;_OE{o#ZZcDBzo8AQF`BmJ9&S!ClXEJtGUvomU5PnuR5Cepa-`X+{I=^k`Im&9DK!l& z_b&)G)Y$d@#s2z%6?K7-&X)!kg~D}-iqb%>&Ql9qZ6no)JhmG`KX$1jys7e>xTBqN zRgZ_V`@KlDcHG@)XG3%Ev~#Hi?F?Au&D0K8O19xxoNG#3oWqK=S*#xq++i_(>2;-Z zE_E5PJLw~|?R{vcrO)a{`Yl)YR{Cw(oyQz3J=b=Q%aPuPeD~7hEUl%7qZ^65BmdrR z<>w0Ks>}4v%H_S4-}Y7wJy?FS_w+%2SDO4g)8wB8o?8Fv+Zb-ATr-9j6OL2;qdA<8Nkmo4QR=mah}oVl+1Ha@6T-SPGY?I?4!RLjZ-Gh zvvJ0wmzCp_KZFZ`F#Z-HS1mT8eF)bOH9)Pppa`I@8tddg=4`m5KDlMY)CibikIgG$ zeBOh3F+P8Q)K0`_dX9-smYA^{RecZRGy3TGycs+;bC46vnBr)4@E5n%S=%@Oi4p9T!;N3Q(ARKKz-NJ zrnxZLd<8Bn9j)q^&Exj=?b|U(=r|5#s80)Qu<($xscreh`C5ZgSJ=)uU=?n!sADc) zLmuTNNFQlG4%=Dk1}&WdZRdL7Z!g?7=|u0^TRd{=ggw8XfwHWOvV1gr0-`vQi>yQ& zx^@e|E4F(8O4$xj*G~Za=IsQy0C^y#Ep`F$UU>`P-BAqSo%3#hyg6NduJJ>bq120% z${B`~+uDUlDf8*%0cV3ncGCj5!onb`R2#}gqP)BhWJ(@P z!A_+}x=gLHc}hOkQ%+K5Is$@|7w26P3RKrC$;-o`Md9$GP_^9{^4Iul0}X+2wc5sJ z1gaZ@O@VM=akYKAY=^&(|k*3;o7|P0m&HhkX zFwhXTwRyuZZ<;-+3~gKHDa+ho1J8-ccDyHK9eK_TEC>agg0*0o4WruCl8LvhHZczcO>%E?&Sb2Np_c_WNK zJA96Lv7M$C7Lt7FH?k~Z#MRY&PtEf^mCjfbO}=WL?Y9-A-STo3Xqwd-Rs0$^6v)nv z1uB2-@y5A5m2Yppt0>1Em07=yihXNTMGEc(Ef{mdWAo@P(%4!cJB;UwBG*UdYk48P~!}_IV!`~ zMx|!4GI!FCsW0wI^e09XMmy$N&UfZPt_nOF0hUqcHo#v-9DTo9A}#+aVI9i`0CRv; zqOX!JLSY3Cq)j-A+OkZoar!htUK&~^6eVRvh=|aywR}g;XL{z3srG&yK0~@sesOi@ z1GnXFgDpyspOrmSE^7|ndh;| z^{3A;)=U8CGfXpmCbeu1>Ql*yGVypB3h{xbe5EIT(bb;Gep3MMUDE(kf9_o;fggQY zQ)*t9>9n_d*PLhjXYZ;=>|I_ZNdN3zJRu+Hy=w)=1Dj6QI<*i`Awy)HF29d1AC z&Ii8ie&%^HJvLQhckR#E#4`}jAoQctflNPQ9m@`P2I^`*)4rnp=j-J&>HAqv?A-&O zS&`~9ec8{Hy}#ssR@Ra3Gh6ce*Jrq&O$O*QOf!8ZwXD0?)7$-w=S6xiq)lD6j8JzVpQ8r5C~Db$BAk-nhkIS@<RCL`5MoXcze45R<_OpcsH+$E{o3CcRx;MrFhPEs8DVqe}WOwOGO z`%;?ZZ8<#Iv9Y$a<8!ohZ}ro6*|_2;+qeviX{#N1Z8;X3iul9zbSR7Q2I**^z+!*$ zig*SD)^gj(bB<>KT+HVr-kE1qy3ikL;=L>1dFRf4Y~OqO)G9l)#XIDW z)&C<)+}U!txi~I1sOt_M7{8%@)4+7~GbexG9-zM#nf64m@1YUz S-}{StJAQwStN9$w