From 397cee3a1283893916e2c14c77dbd14566e468df Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 7 Jul 2024 06:40:31 +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=69450 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1918985 13f79535-47bb-0310-9956-ffa450edef68 --- .../usermodel/section/geometry/NURBSTo.java | 3 +++ ...mized-POIVisioFuzzer-4513310052515840.vsdx | Bin 0 -> 26536 bytes test-data/spreadsheet/stress.xls | Bin 65536 -> 65536 bytes 3 files changed, 3 insertions(+) create mode 100644 test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-4513310052515840.vsdx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/section/geometry/NURBSTo.java b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/section/geometry/NURBSTo.java index e3d6f59eb8..deb00115c2 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/section/geometry/NURBSTo.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/section/geometry/NURBSTo.java @@ -67,6 +67,9 @@ public class NURBSTo implements GeometryRow { for (CellType cell : row.getCellArray()) { String cellName = cell.getN(); + if (cellName == null) { + throw new POIXMLException("Invalid null-cell in NURBS row"); + } switch (cellName) { case "X": diff --git a/test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-4513310052515840.vsdx b/test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-4513310052515840.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..2e316f87308173455b1f00c6f9124cf78bb86ad3 GIT binary patch literal 26536 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 U9)2YwgCm2(g|Sqr`aG=uKj%8D{r~^~ literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index 4c9c65f32a1908ad8fd3b178b171b73c07bb1cf5..f4d52ecf69409b8ebb777a11b272176c684ede3d 100644 GIT binary patch delta 2748 zcmZvc3s6*57{||9mUV@d3qq1@w_#^W#@S3j5!Vet6G;ga6kmjd=!_&`YWc{JRny8x zuTxqXSy`FcL%Ee9g^|6?%B*~#sVGf=j}XPCBB#E4_7B_HX?OUB^E==7``>f8gU@I6 z`K&wcc3j&znb9YVWh^e4b?<$pbITX3Vv%grA+f@-F0|0b*cl_b*NAjJ-^kDA;bPA? z&yc~%iGv0uCL|;$B_}2i9h`8>!UZ!I-@w?I@`c4^r8DEo?=LGGP%^8mEUvUXE+;>4 zy} z2y^{sZDm&G>KE7#WueTqq))fc#%yf1Gq6wTe74=cW|j!E&lp`)w5YG$63O~;M(sCI zWh|X*%w+M#hQm#~@+#etxgE=vQ1!1kt<0nNR~B03&>pwgs569Cer~1TZtU&~W!JMz ztl|}4JU4yz?mg3&1z&tlw=kZY!hpgQK0s~evtIg#rkO0=&wu5A*zaQ5(TYBF)AZ>& z=T-k07f}ssEEX=R8l2%y*}<8UJB_^!1>9Aw2X2y^Hy<8YhnhEQq#fU4(U#Jjd3Yl9 ztPhIz6a9IGaGrGYWg?SmrC31KCpJ@EF7}^vdsbk=CMSl_q&aV+KYlD*Nqcp26~eBg zuT}2RACmSS5(7^;`AU&>%IR4Jhh1^l6^ET(pMayMbgUMerK6S{55p0rIKmW1nBoYR zjz@&nXg-I#(dl^<4)bM>WnE`+C=Q3>=p`L%M5T0WBF9=dA{0l2;)qZjnslraZPF2b z+UZ#jN2KD2R2-3tBT70R6Gf-Zvn(aY<8bs=9K97sZ^aQU9Z!e@(s7RJlcL9&6#kS* zJLBd;%%S?U*huvmv6t!w(MENna5kmzXT=1n&xy57ZvMR3MRk*CqWXfN{j%M{t3>Uu zZvLWZrn*@~H>dEIL>AST#Y(ELh}vd1-y)i+zABM)h?uhw4_bvBj;uf#bO4 zakhzrExPt5*v(*9TXeo%I9uKPEs@#k*51bcK4 zM7k>Th3k54ljQa6KyMP}qt5EuPOw2>sl=+m27{HJ)x8E-vXYY=lw-bjvFttc4#9jq zIo}6M0lPr#1F)fBeb4FMU0@z1#}kw@Oy+!u-eH)ZcTU%8z`S5p#CC(-3bv1OYQa*K zoYbJ4;WFnV^bW_o>%6Xg43_3+M)vtCi&h7ij>bQK)4hAZMkqlef`UfMpij^{67#uj zx>gT%8(0OgPr*ikZEMrLd%-gNj8^80kP(zKTIPI)-qD!n7j^A(uuQN4#J&K#9c=1F z-TNij7$s*+P|jGH^A&o>Vtyw%_km@Bognr#*d1U!+jZ}LuxuqKJ18ed=6r+R9LyKD z>)N+qwBkbeQdJ2+ba delta 2465 zcmZ9M3s6*57{||9cGnG7E{F*Ob7xd$8f}|WOA!|zSW+4gK2UrhKBlH%BF35#$;YbM z!_cg+cS;Y-N~wq|WiPVKQhSkF#v{Q8Gm0<+3R|P-^xeaswzIpl-^}@)@B97lJ$rWp z0cRlKtSa;-l+P3ViWJjIm)~3R$O8`*KfFoAh}L7Y!CUT{?G~cNiW`_dMMhY;Su)Bx zm^Z*>bc!JZgz)lQ*Ek^#SdIA$<+|iq*V`tshBqX?i(*4-hj56R$j~}MM2O`7t)0Rt zl5Ys@yM#+5uNv~7&n?`dC@Hkh>9WYvw-%0QyU(gAC|GHwoj5LC9!HGmrmp%p>Z~uM zV12Z_s#dET);fZMdK;3WywaYL!YjSj@WzF5SdAI7OZ#e~LTi_uW>qxpbQr66?kb;_ zJsU5|D5rU(e3Z(XeR4JJ;<|>8a$QT;xUQocTYRYjOt{qqAD5bU^MS;R^}JWhHa8zf zBEOw#k8h6mHqh3VB)Oh;w zg{PBJpN1nwbHr$l7|ju@9OYE291ZN)0>>cDF-UU^(j0Nhv6XHVL*Zc