You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ta...@apache.org on 2018/08/08 16:06:18 UTC

svn commit: r1837658 - in /poi/trunk: src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java test-data/openxml4j/62592.thmx

Author: tallison
Date: Wed Aug  8 16:06:18 2018
New Revision: 1837658

URL: http://svn.apache.org/viewvc?rev=1837658&view=rev
Log:
bug 62592 -- prevent StackOverflowError on corrupt thmx

Added:
    poi/trunk/test-data/openxml4j/62592.thmx   (with props)
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java?rev=1837658&r1=1837657&r2=1837658&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java Wed Aug  8 16:06:18 2018
@@ -250,6 +250,9 @@ public final class ZipPackage extends OP
         final ZipArchiveEntry contentTypeEntry =
                 zipArchive.getEntry(CONTENT_TYPES_PART_NAME);
         if (contentTypeEntry != null) {
+            if (this.contentTypeManager != null) {
+                throw new InvalidFormatException("ContentTypeManager can only be created once. This must be a cyclic relation?");
+            }
             try {
                 this.contentTypeManager = new ZipContentTypeManager(
                         zipArchive.getInputStream(contentTypeEntry), this);

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java?rev=1837658&r1=1837657&r2=1837658&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java Wed Aug  8 16:06:18 2018
@@ -1090,6 +1090,21 @@ public final class TestPackage {
 		openInvalidFile("SampleSS.txt", true);
 	}
 
+	@Test(expected = InvalidFormatException.class)
+	public void testBug62592() throws Exception {
+		InputStream is = OpenXML4JTestDataSamples.openSampleStream("62592.thmx");
+		OPCPackage p = OPCPackage.open(is);
+	}
+
+	@Test
+	public void testBug62592SequentialCallsToGetParts() throws Exception {
+		//make absolutely certain that sequential calls don't throw InvalidFormatExceptions
+		String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx");
+		OPCPackage p2 = OPCPackage.open(originalFile, PackageAccess.READ);
+		p2.getParts();
+		p2.getParts();
+	}
+
 	@Test
 	public void testDoNotCloseStream() throws IOException {
 		OutputStream os = Mockito.mock(OutputStream.class);

Added: poi/trunk/test-data/openxml4j/62592.thmx
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/openxml4j/62592.thmx?rev=1837658&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/openxml4j/62592.thmx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org