From a8b31c37a6728063f9e5df620c6f885990de0e93 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 7 Aug 2023 11:11:08 +0000 Subject: [PATCH] Bug 66425: Avoid a ClassCastException found via oss-fuzz Add exception details and fix expected exceptions to make tests run again git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1911503 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFDocument.java | 2 +- .../org/apache/poi/hsmf/datatypes/Chunks.java | 2 +- test-data/spreadsheet/stress.xls | Bin 58880 -> 59392 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index 1ddc55d98a..b5c926967e 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -286,7 +286,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { } } } catch (ClassCastException e) { - throw new IllegalArgumentException("Relation and type of document-part did not match, had relation " + relation + " and type of document-part: " + p.getClass()); + throw new IllegalArgumentException("Relation and type of document-part did not match, had relation " + relation + " and type of document-part: " + p.getClass(), e); } } initHyperlinks(); diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Chunks.java b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Chunks.java index 2ffcb3f3b2..37105fc8d0 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Chunks.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Chunks.java @@ -251,7 +251,7 @@ public final class Chunks implements ChunkGroupWithProperties { allChunks.computeIfAbsent(prop, k -> new ArrayList<>()); allChunks.get(prop).add(chunk); } catch (ClassCastException e) { - throw new IllegalArgumentException("Property and type of chunk did not match, had property " + prop + " and type of chunk: " + chunk.getClass()); + throw new IllegalArgumentException("Property and type of chunk did not match, had property " + prop + " and type of chunk: " + chunk.getClass(), e); } } diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index 74b0f1b5dac650a3f8000e9f2f161f27675e0933..bfa0cd3f93e22a35db6f739bb84a32f04800f413 100644 GIT binary patch delta 19143 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 dgK3256Y)MH-sir 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