From 481c00bc6f8dbc659816b200058698e00d027808 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 11 Sep 2023 18:25:13 +0000 Subject: [PATCH] Bug 66425: Avoid a ClassCastException found via oss-fuzz We try to avoid throwing ClassCastException, but it was possible to trigger one here with a specially crafted input-file Should fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62170 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912252 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xslf/usermodel/XSLFSheet.java | 6 +++++- .../apache/poi/xslf/usermodel/XSLFSlide.java | 6 +++--- ...imized-POIXSLFFuzzer-5463285576892416.pptx | Bin 0 -> 39076 bytes test-data/spreadsheet/stress.xls | Bin 52224 -> 52736 bytes 4 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 test-data/slideshow/clusterfuzz-testcase-minimized-POIXSLFFuzzer-5463285576892416.pptx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java index 4fc072ef95..128fcbd41e 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java @@ -395,7 +395,11 @@ implements XSLFShapeContainer, Sheet { if(sp.length == 0) { throw new IllegalStateException("CTGroupShape was not found"); } - _spTree = (CTGroupShape)sp[0]; + XmlObject xmlObject = sp[0]; + if (!(xmlObject instanceof CTGroupShape)) { + throw new IllegalArgumentException("Had unexpected type of entry: " + xmlObject.getClass()); + } + _spTree = (CTGroupShape) xmlObject; } return _spTree; } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java index c48c8d162f..0b9e6a3212 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSlide.java @@ -271,9 +271,9 @@ implements Slide { */ @Override public XSLFBackground getBackground() { - CTBackground bg = _slide.getCSld().getBg(); - if(bg != null) { - return new XSLFBackground(bg, this); + if(_slide.getCSld() != null && + _slide.getCSld().getBg() != null) { + return new XSLFBackground(_slide.getCSld().getBg(), this); } else { return getMasterSheet().getBackground(); } diff --git a/test-data/slideshow/clusterfuzz-testcase-minimized-POIXSLFFuzzer-5463285576892416.pptx b/test-data/slideshow/clusterfuzz-testcase-minimized-POIXSLFFuzzer-5463285576892416.pptx new file mode 100644 index 0000000000000000000000000000000000000000..1038f440c2e8eb3517f67e00bb1d84d6cb6b6b78 GIT binary patch literal 39076 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 Df-ohs delta 2627 zcmZ9OX-r&I7>3W88TREusfB>o*dMlqp)F;b!X1`E*~?y*Ld!BxrDy@|V$s&p*1A-z zg=36As@7^nLrZ~yLW!j;v5|_2zf2^xe@skFh>3|!OpW3oc<>sE`Joo*c_gpfQ zOwVO=&xhtqaX~E%e<6%DkECUrgZ^DvSy{bXMW4B|ugNlMY4?q=7PzAREayba!LFl+ zIy;V>XCZ9*iZ~nC>-C9+v3_S*(2sU!P2t}rQB&OEWoK78bAD5NjVlXmgAZeYH2=p| z#^#;frS<%@qv8o!eu^G&x_$`t>`lzX9{GFrW@cuNHG2!QFvlj(b1&w_GP*bX@AGEf zY%t36oZ9)IuY1o-!LFQ%eebL)|Fq2c)YX2AXdS3CUt>(n4nzhoN)2a=bTQ`qZJ?HK ze5870+*Kan*?YOjL z{7&l*5qTpjC7$M{Y0jJ8Gmu&KYtvO=dh?VDx^bs4+6US-I7ehn} z#1gHA!h6)pi=6SJgC@R5JRGy~V&Ok-s==bcE)%N(ivjzVdTPO} zlI^3NtH)~SiIqKd$i}*};^_&M*NgNCE8j2LC#=c=Jl~GzpHD<94PbF#4<=Nl5o`yT z@1&|VfyKKS?Of-GH=H9uo}(Gr1k5*0s)_?F5v-S33s@4^B=xj{CF^>U4Lvs5a}Ze@ z=0k3)%ClfQ!R*AI14{vGyRB+%V5z#ER6~y@dk!J1VSa|3?O=AWWn#~RrGZ6EsoD!* z>AIeDLr;e6IgD(EJL~M4`pBeo0A@n^S;gDny}0+s{z7xf$k%hmPd8hY|%&oN~4Fkd#UD#yX{!A=r;8LR;8%V||R0amE% zDKzvH$)0Xxi`?1%yQ=aE&>kpbiM!~*M z)X1Lm$kt#!WL8z)0ILPF6MGYEA6VP0s=WnPr|YRR^wi6qw~?*K{0uoSfb9ocCiV{4 z0kDWURqF+7(DgJJdKzWVyT~?TzH9EVauKX)wP#LM-UDl1?U`4#OJELNkHgU8`iU3L z`jBmLXPsU1OMLWRqB+z=k5lN*q`Sxd-K4)LUkDSm3xU34XWk#X_sdUQY_zNwJqv$w Shd6fsoayJUosaK(oBsptl