From 9fda604fb83a781ae581db06133583ae50394f3c Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 6 Dec 2023 19:49:34 +0000 Subject: [PATCH] Bug 66425: Avoid exceptions found via poi-fuzz Capture and report integer overflow as normal parsing/format exceptions Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63628 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1914401 13f79535-47bb-0310-9956-ffa450edef68 --- .../xssf/eventusermodel/XLSX2CSV.java | 9 +++++++-- .../XSSFEventBasedExcelExtractor.java | 2 +- .../apache/poi/xssf/usermodel/XSSFSheet.java | 2 +- ...imized-POIXSSFFuzzer-5937385319563264.xlsx | Bin 0 -> 54387 bytes test-data/spreadsheet/stress.xls | Bin 60416 -> 60928 bytes 5 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 test-data/spreadsheet/clusterfuzz-testcase-minimized-POIXSSFFuzzer-5937385319563264.xlsx diff --git a/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/XLSX2CSV.java b/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/XLSX2CSV.java index fdbcc89901..d9fffabe48 100644 --- a/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/XLSX2CSV.java +++ b/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/XLSX2CSV.java @@ -212,7 +212,7 @@ public class XLSX2CSV { styles, null, strings, sheetHandler, formatter, false); sheetParser.setContentHandler(handler); sheetParser.parse(sheetSource); - } catch(ParserConfigurationException e) { + } catch (ParserConfigurationException e) { throw new RuntimeException("SAX parser appears to be broken - " + e.getMessage()); } } @@ -234,7 +234,12 @@ public class XLSX2CSV { String sheetName = iter.getSheetName(); this.output.println(); this.output.println(sheetName + " [index=" + index + "]:"); - processSheet(styles, strings, new SheetToCSV(), stream); + + try { + processSheet(styles, strings, new SheetToCSV(), stream); + } catch (NumberFormatException e) { + throw new IOException("Failed to parse sheet " + sheetName, e); + } } ++index; } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java index fd008f3a3d..c79024e3b4 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java @@ -289,7 +289,7 @@ public class XSSFEventBasedExcelExtractor } return text.toString(); - } catch (IOException | OpenXML4JException | SAXException e) { + } catch (IOException | OpenXML4JException | SAXException | NumberFormatException e) { LOGGER.atWarn().withThrowable(e).log("Failed to load text"); return ""; } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 9fe2ea71f0..f931b2d58d 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -146,7 +146,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet, OoxmlSheetEx protected void onDocumentRead() { try (InputStream stream = getPackagePart().getInputStream()) { read(stream); - } catch (IOException e){ + } catch (IOException | ArithmeticException e){ throw new POIXMLException(e); } } diff --git a/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIXSSFFuzzer-5937385319563264.xlsx b/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIXSSFFuzzer-5937385319563264.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..16515d70527b938d2a3ce68db942eab0aa4d7060 GIT binary patch literal 54387 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 z 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 Qm_UExLHFk2zPq3P1Mng#CjbBd literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index 9ad1991a269306961d2741d462d0b98e63b306de..9a4e488e7b97fd5d255222d394b34296ca025c9c 100644 GIT binary patch delta 2738 zcmZvddr(w$6vuzRU3M3FbTQP`=r`d^+BjP(@>po4pg={XfW!wVvf`qPJQP;N%D`7< z;Hy(vshQc!h*EC!!Zg!FM--irSE-2U;MDYAQ&Wx6`Q1J2a(CLDJ+tR?zvuh?-Fts` zx3=3@d)2sWa=3@lD}u4gqsg0$BUd5#cVJ*(@UvR>yR&UgK_$VXn{uQ)gr!#(xmJ4I z73Ec1SOlAX3O0t-n@*b;JEum5r=}RjhN^QjH<}f;zI2xqJeml_qS{y8s?*QDj(G``lO zg5$exxW6|r1M3L!_eN%9X+!!T7R1uV`;VKLiKVR@pj+#0`VkV24ab_3~lm2*u%)%{PEojZ-V>^WZa&vimLj67N zL0+f!oIPYvme2y_u$2`--T4W8DKwwAaToMqEr#$m8(#)VSeJtfs~dK=Me!17#JU2` zwMB^%^f-=p!GgQuK70ph*H@mNm6Za&Ak_kE86;istB2{-A)2}zR%z<(SS#T05Ot_d zE$^+Bt%N>JeHZI07<19@9j;T${bgm9kbP0Eqzr2nY#X9hbZUI8Q0;+}n)({n)$rF4 z^>Cf~UQN9QV%nv5Cf2p!ZuhSwQl}oFsjJ~&yPdCto^~657EG6H{5goh`aCScx*oP+ zeF2&;*?A58hP4*PUAFNJkd1XCtjD@ZJ$$*rz&Atg6&v3I8?e3zjaTe^E8NEV5{M2v z-v+rIHvTefz*+~5SnHt&>vk}8+V~EL>9i?3>Gs>S+rJA|bP8oRv4@H6=@k4GXvP_U zKAd@#j!&ZFQC$-puMwN@Cv9)BL1vq3k7=KrA2GK4NxaTf2p0Ke0qzPGUe#l9ux} zX_IKa7d;OUdz4sck5Jwr<{)P85srhzrg|B6^14k8$Vt|6-X(1^&F@6dL&P2<)`ILk zVvl>7+TXL^;CP>4iY_Q6AShJ}`hc{lWP0MNP(CE~1hHR{eMIa@V%BTIahO<|E+;J@ zCtb_=n6&9MUvW(+4aBAq+l%ZIV$+GWVooEm8M>Sq0XZ33&Znf!p!o-`3*|FnGl|VY zc7)h0Vr#Dp$5CRlbvd&Gax%4?Cemiod^>uo#GWGd53| zC068RYX8kK9FF{)*mNt=7@mMuDfp?qeQY#`?EXlY-yasd2 SKiTR#n+(Oh>fd+F#{U3$Vnrwb delta 2351 zcmZ9Ne^69a6vyw~A4stHFb$=hJB@$jjPq>#?W!*YH5SnjfdYgAgtS0W2`G&=2qLrG z1W%>?P#`NJLXsE#vM4HNG6xi$1SCa%RD&~3|1{&!jBRJ{9$Vhy&7PV2xu0{s_i@>w z@>gqRzqNKjLdYocA_H|-k z2)^6h_}JtWJSk3j9O`l_B3f1LzlF# zVto=OCfRoy?CH`jfrY*P*@;+7p`h2r%b>AWt49`qRRI{GS+9nbJ4}i zp#$r)@Fx-vL|;<*a}bBMLNC75V&Rn_F01@`NWfYJWtUyN8d|Zw0KZ|a0nw-O7a;-b zekjBG5;S5x0Nq$$hKW8^dxfrFmDhhzUaEts_y_F2)Z5oOPribe+<5^Pa{2{-6+Hba zKLpMFs!~h)^J#yyf38wTYymOnfKUz-TSzQ^Kxja0QGns96TeuCOy^iE&+!_$i>bdJ zXTDBs39)m?-XOM=*iFniLTs5KXPGI-C3B9F>!SXoD?)jb*m7d!$lfBhf>_fPp}kFP zr6FgfDMynz?~toezYk{~BX&PAbxz3#Nvp# zhJ@Bc%x%bVn{wi1&WGg2Q~x2H*-UIbvD3&tB9=hx56o#Hw!x6I!IZO6=6p=?E;7Vn?nEt&P|wL(V2sPLj;|gxn~&P`)R&m00?i(0(A67ht&Ze}D2!Ir%c@M{@H6uHH5l z&D(!pZgnih?O6P<`i8@>d3*+Bj5|V4wyZze;2YpD+cpC#$N$EEMrAjuEyu6w|J(?% F{s*;p2aEs!