From cdb2ba13989badf60d88c75daf69c94ae6ac2e13 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Thu, 24 Aug 2023 08:48:45 +0000 Subject: [PATCH] Bug 66425: Avoid a NullPointerException found via oss-fuzz We try to avoid throwing NullPointerException, 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=61441 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1911890 13f79535-47bb-0310-9956-ffa450edef68 --- .../opc/PackageRelationshipCollection.java | 19 ++++++++---------- ...-minimized-POIFuzzer-5205835528404992.pptx | Bin 0 -> 36689 bytes test-data/spreadsheet/stress.xls | Bin 66048 -> 67072 bytes 3 files changed, 8 insertions(+), 11 deletions(-) create mode 100644 test-data/slideshow/clusterfuzz-testcase-minimized-POIFuzzer-5205835528404992.pptx diff --git a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java index 350e63e22d..44feeefeb4 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java +++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java @@ -44,15 +44,10 @@ public final class PackageRelationshipCollection implements Iterable relationshipsByID = new TreeMap<>(); - /** - * Package relationships ordered by type. - */ - private final TreeMap relationshipsByType = new TreeMap<>(); - /** * A lookup of internal relationships to avoid */ - private HashMap internalRelationshipsByTargetName = new HashMap<>(); + private final HashMap internalRelationshipsByTargetName = new HashMap<>(); /** @@ -195,7 +190,6 @@ public final class PackageRelationshipCollection implements Iterable" : relPart.getId()) + " for relationship: " + relPart); } relationshipsByID.put(relPart.getId(), relPart); - relationshipsByType.put(relPart.getRelationshipType(), relPart); } /** @@ -214,8 +208,8 @@ public final class PackageRelationshipCollection implements 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 literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index 21a3abea5c874f7345e04359af260040d7ca790e..5af5cc74d01a2758b359c3c191c20dd27d781a8e 100644 GIT binary patch delta 569 zcmZo@VQJ`LnV`eSG*MTXrGbHgVPoJL#z{;pob^EVzyJULH*V%-dd|pF2jouv!CcC^ zB{aqR+TxO-AO)h0W%hIP3J7j4LKLn2Rv6T%SD6JdD+l zg@K`X^G9=81;)nB{1I$Yj2@G-Q}rhIr?9)38X1^c7@L|JS(q4@SXvtC6%>?I=rJ%j zC+6klmnamaCZ+(1oWzpM{Ji3f%mN*Sf};Gg%#_p=1y2`+%wmPq+=7zI&7wtz_~o_( zUAV4;fkA9K1B2XB28Lss7#J4qV_@(*!@!VoZSuYQ0h?W$ss$LgZ$3EbuZtuHlK{h3 zpcZxpRYoAi;K0bw0214_dHwZR_WHjJTwrMjhC-k;gvZF>z`z4k3gIyUd9FYnBNH1? zB{Pr*5oZCiqTs4n8N3kE00jk-{w0$H;Up3#*8l)V-~a%>=l}o*@c;l%@{@6bP_v5R(jBA$ I0;U830y~jip8x;=