From 7601beb5921fa38fe654ebf8f26d717a4e1966ee Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 14 Jul 2024 11:26:43 +0000 Subject: [PATCH] Bug 66425: Avoid exceptions found via poi-fuzz Prevent a NullPointerException Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=70273 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1919213 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xdgf/usermodel/XDGFSheet.java | 4 ++-- ...mized-POIVisioFuzzer-5026516754628608.vsdx | Bin 0 -> 24625 bytes test-data/spreadsheet/stress.xls | Bin 67584 -> 67584 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-5026516754628608.vsdx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java index ef363efc8e..11621ded35 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java @@ -73,9 +73,9 @@ public abstract class XDGFSheet { for (SectionType section: sheet.getSectionArray()) { String name = section.getN(); - if (name.equals("Geometry")) { + if ("Geometry".equals(name)) { _geometry.put(section.getIX(), new GeometrySection(section, this)); - } else if (name.equals("Character")) { + } else if ("Character".equals(name)) { _character = new CharacterSection(section, this); } else { _sections.put(name, XDGFSection.load(section, this)); diff --git a/test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-5026516754628608.vsdx b/test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-5026516754628608.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..4cbf5eb42a0e12cb8429d3c9d535e2cb1c9e5585 GIT binary patch literal 24625 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 literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index 04046bd635862ed77db5acd57fe09fbd8a12826d..3baca6559b3895997aa86ed0d870a5773f371563 100644 GIT binary patch delta 2681 zcmZ9Mdr(wm7>B=acUdkA9*7WO=QJ@>mUA>&kX_`YAf|>Sh~^DS0_qQ9j2N4uKOCva zZi-M}Nm*)UW=45Cl@SJ!-OFyKrKqII#S5-FBM3}Q?>YN}@ALc4*-K5m zqo&@m=i$h4D+(F?MX*`bWe+|2Sb60mE7!1SR@yF}j$9W~=VYu`i;bF*#ZPF9=H*0* z*8GgP

k3$LmX*;!R2SCa2%=_{s;XvqaCh@wSYcg?oOYwz)7gB)*T04P`8n9K4T4RCsu#sqsCv$4jAU~gx3mN=?+Fb7K9dcR-F)Li)P83(fF-Y8O!1l)0s!xb%`7v^glPi1qL?xTF>;U2BKqlhOp%E24w`h#)>`w;y>Xl19j*`#N29(^~S zJtyMMPT?+Lve#vRiWCQBWh zp@!3o>%1$@07i&j3!c2~E!|@Uv;U-5o93A9%SqzPGM3@{d!y({snH(-S z^1Iyp6;aU@yq8FmBg$~R3P+U55d}vpIW~y)QI0Vthh#V!;E+rX369C#ZvL9c?GBzJ z+T@5a9IwL>V{*j6v4tEPMe``f4JJpd;dld%Sd$|b4ynh@-xNxZk8cuXJqq6}>ZooJ z%~anK-Bh=V*mDYhTV$T|@onM>s_%&1M7E1|s_%->^9tXgrJirJ@%Kc>MTPGau3m+| zFMPc|-Y6=mejs*G{ZMoe-z8j^6uw*dsO}MERQHNHs{2IqB}LV6Sj9N(N7S{@7fzwW z>L0h^58OoK#y-aE#K5db^2_`ak?B|Xeo^69q)%~uGOlm;Pmr3xlEF^;W$8084_NqR zS#1VO2{7vPbEH_#k!qad0A^FMUvgQNJ_nluR!gh}EDfxQa$3Q>rW~&&$7kexfmt8+ zW3I?j8(2EnG-6+ZO$95zBC7|%G6IY`{eChmIjWKK6=qfJw~_N}usgweiG2e$4J_fR ztbPkN-IO!kl9OrVe23Z0z^qnvb(2l{9xw}1`I;>K05$_G=bEhk2$pRM%C-c}G=hG@ z>`d%$CFdcqyTA?+`x$H&*Z}4H0yf)}Gux7*|2W69Uokre`vrZn^c&dSV5^Az4weJ9 zvrkqJgUvPN%(dj?8aaPpHW&N6UzU!5-2*m>*io=~V9WYt^-r)oQ%;^GC*R2V3$yvy z-%HM8VDrIF5<3o702Y2-R@=cAm~s|aauymnCosDZ`z6<9=_J^_V70_ffh_`SqMQz} z#ipFamYgL<&fl0_g8i5QSvn226l@x?GhoZW$_HfiAF#pzqfY+<6gw> VId0rv!+Evc_Ei7=K?ir*{|BrQD;EF& delta 2761 zcmZ9Odr(wW9LLYuU6utFE&{m?yXO!8$(-B7BVfS<7ZL*n0utjP#;ds#qsB~4L(No- zBRz>Wjs;fI!=7qn-ijh3D=MNg%j`j3`TRb=d-mRC zXz*GZyp}_?_G<@A5PJoq%=+rP>h8Pyo*nl#qHq*6KzG`k0vfFdP3n=M=^ngMFUrjh z)nm#6104UM<$(yKEsp}ug0TA3wN&#frKkGKl2F^uRT24MECS>|7xkO_4J``2b< zMy@4m3$h^Bb^iST6o6b0EWhfrA}gwK`uEvY;2PV)8kxcjPG4EIvR=P`V927+oLY-R zVz7~76oX@Q&*?I}qJ#MRu`w^izYZ{bdiR-qCS@1vyUe~9qt}5N>5k!5_)*$6tm4OL zFRPDJAFEGL*NBRrq*)^>c?vqLyd#Nq8vRywWCv=Z-VrB$njRc+rZh3GhwTKi!$-5X zg>yE>J5Vz?Y=XnK;Ak0j;%BI9)UOB<6vo9mkQWref+83$qmDVArA~+j ziP8g^8?xH-MEe}FWWkv%Ia9dv2(T#vn;*PeU{fVFjk8|^n+CJmr-||nWNQ~Py?=VIN&6N;k0A9((sVBE12$b?(D{tWB}n04btqWl8cM#xGp674u-If64sa^`a9 zufXOCY_7!SarOkTc`)lFoBtbRw?P(siDqV8u$y64+AL8{LUspawX;M!1zEA+ zES8+cKSvHU1Z;`GmPl+VXHNrL3bUrz{4 zoE-*sE6i%2BgzP5cS6=bw_O{BtU_>BNX|;`90RseU@IlIinHUuRxQq-C&~n5)eD*4 zKc9rD_j29UPpl>A@Rby^o&62>FbmqVlbBlzFpg|3#@KGF&WPWB{KNpJD=bl+4H(y( NP1nzK&RVe5{68y&Awd8D -- 2.39.5