From 50b4da40b8fc9db8a1c13f76af0693e17ad7e549 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 7 Oct 2023 22:12:30 +0000 Subject: [PATCH] Bug 66425: Avoid Exceptions found via oss-fuzz We try to avoid throwing NullPointerExceptions or endless allocations, 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=62706 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912794 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xdgf/usermodel/XDGFPages.java | 9 ++++++++- ...mized-POIVisioFuzzer-6358126418591744.vsdx | Bin 0 -> 33741 bytes test-data/spreadsheet/stress.xls | Bin 56832 -> 57344 bytes 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-6358126418591744.vsdx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFPages.java b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFPages.java index ab6077449e..4e50cad597 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFPages.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFPages.java @@ -25,6 +25,8 @@ import java.util.List; import com.microsoft.schemas.office.visio.x2012.main.PageType; import com.microsoft.schemas.office.visio.x2012.main.PagesDocument; import com.microsoft.schemas.office.visio.x2012.main.PagesType; +import com.microsoft.schemas.office.visio.x2012.main.RelType; + import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ooxml.POIXMLException; import org.apache.poi.openxml4j.opc.PackagePart; @@ -68,7 +70,12 @@ public class XDGFPages extends XDGFXMLDocumentPart { // this iteration is ordered by page number for (PageType pageSettings: _pagesObject.getPageArray()) { - String relId = pageSettings.getRel().getId(); + RelType rel = pageSettings.getRel(); + if (rel == null) { + throw new IllegalStateException("Could not read relation for page settings"); + } + + String relId = rel.getId(); POIXMLDocumentPart pageContentsPart = getRelationById(relId); if (pageContentsPart == null) diff --git a/test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-6358126418591744.vsdx b/test-data/diagram/clusterfuzz-testcase-minimized-POIVisioFuzzer-6358126418591744.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..041c8fb140fe663d9f15f76202ba8357018b4c81 GIT binary patch literal 33741 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 N2nhtF;Qi~<{{yPEFJJ%w literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index d06a4e4d5b74ce0d1ad463948d8cab670be9244e..50e923e810d017d375c34e5fc0bf460df4499adb 100644 GIT binary patch delta 3437 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 L-+d2mMqB>_TKH^o