From cc9d1c7c705be85916d00533841e761696027bd4 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 11 Sep 2023 18:25:18 +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=62225 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912253 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/model/XWPFCommentsDecorator.java | 6 +++++- ...inimized-POIXWPFFuzzer-5564805011079168.docx | Bin 0 -> 34995 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 test-data/document/clusterfuzz-testcase-minimized-POIXWPFFuzzer-5564805011079168.docx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java b/poi-ooxml/src/main/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java index 3c70801345..062639d45e 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java @@ -16,6 +16,8 @@ ==================================================================== */ package org.apache.poi.xwpf.model; +import java.math.BigInteger; + import org.apache.poi.xwpf.usermodel.XWPFComment; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTMarkupRange; @@ -38,7 +40,9 @@ public class XWPFCommentsDecorator extends XWPFParagraphDecorator { commentText = new StringBuilder(64); for (CTMarkupRange anchor : paragraph.getCTP().getCommentRangeStartArray()) { - if ((comment = paragraph.getDocument().getCommentByID(anchor.getId().toString())) != null) { + BigInteger id = anchor.getId(); + if (id != null && + (comment = paragraph.getDocument().getCommentByID(id.toString())) != null) { commentText.append("\tComment by ") .append(comment.getAuthor()) .append(": ") diff --git a/test-data/document/clusterfuzz-testcase-minimized-POIXWPFFuzzer-5564805011079168.docx b/test-data/document/clusterfuzz-testcase-minimized-POIXWPFFuzzer-5564805011079168.docx new file mode 100644 index 0000000000000000000000000000000000000000..5fad14ce589f827f8ed2b33d5f4cdd2d699b440e GIT binary patch literal 34995 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