This is an automated email from the ASF dual-hosted git repository. centic pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/poi.git
commit b195a3b9ed72f646c0efb34e0637467aa9913e46 Author: Dominik Stadler <[email protected]> AuthorDate: Tue Jan 6 20:40:17 2026 +0100 Avoid an NPE when OPCPackage is closed without being fully initialized --- .../java/org/apache/poi/openxml4j/opc/OPCPackage.java | 5 ++++- .../java/org/apache/poi/openxml4j/TestOPCPackage.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java index afdb5a5800..fcb774d4f7 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java +++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java @@ -1875,7 +1875,10 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { public abstract boolean isClosed(); protected void closeParts() { - partList.closeParts(); + // might not be initialized fully yet + if (partList != null) { + partList.closeParts(); + } } @Override diff --git a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackage.java b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackage.java index 3a2d9bdcd3..30d2a2bf15 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackage.java +++ b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackage.java @@ -19,12 +19,21 @@ package org.apache.poi.openxml4j; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ooxml.TrackingInputStream; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.openxml4j.opc.PackageAccess; +import org.apache.poi.openxml4j.opc.PackagePart; +import org.apache.poi.openxml4j.opc.PackagePartCollection; +import org.apache.poi.openxml4j.opc.PackagePartName; +import org.apache.poi.openxml4j.opc.ZipPackage; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import java.io.IOException; +import java.io.OutputStream; + class TestOPCPackage { @Test void testPackageCloseClosesInputStream() throws Exception { @@ -48,4 +57,10 @@ class TestOPCPackage { } } + @Test + void testCloseWithEmptyList() throws IOException { + OPCPackage pkg = new ZipPackage(); + + pkg.close(); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
