Author: centic
Date: Sat Oct  7 22:12:12 2023
New Revision: 1912791

URL: http://svn.apache.org/viewvc?rev=1912791&view=rev
Log:
Add some missing schema-files to ooxml-lite

This should fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62255

Modified:
    poi/trunk/poi-ooxml-lite/missing-xsbs.txt
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java

Modified: poi/trunk/poi-ooxml-lite/missing-xsbs.txt
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml-lite/missing-xsbs.txt?rev=1912791&r1=1912790&r2=1912791&view=diff
==============================================================================
--- poi/trunk/poi-ooxml-lite/missing-xsbs.txt (original)
+++ poi/trunk/poi-ooxml-lite/missing-xsbs.txt Sat Oct  7 22:12:12 2023
@@ -98,6 +98,7 @@ ctwraptightae95type
 ctwraptopbottom5e13type
 lockedcanvaselement
 polylineelement
+relationships93b3doctype
 relidselement
 stalignh768ctype
 stalignv5abetype

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java?rev=1912791&r1=1912790&r2=1912791&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
 Sat Oct  7 22:12:12 2023
@@ -34,6 +34,7 @@ import org.apache.commons.io.output.Unsy
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.ooxml.POIXMLException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.poifs.crypt.CryptoFunctions;
 import org.apache.poi.poifs.crypt.HashAlgorithm;
@@ -226,7 +227,7 @@ public final class TestXSSFReader {
     private String getShapesString(XSSFReader.SheetIterator it) {
         StringBuilder sb = new StringBuilder();
         while (it.hasNext()) {
-            it.next();
+            assertNotNull(it.next());
             List<XSSFShape> shapes = it.getShapes();
             if (shapes != null) {
                 for (XSSFShape shape : shapes) {
@@ -259,27 +260,27 @@ public final class TestXSSFReader {
         }
     }
 
-   /**
-    * NPE from XSSFReader$SheetIterator.<init> on XLSX files generated by
-    *  the openpyxl library
-    */
-   @Test
-   void test58747() throws Exception {
-       try (OPCPackage pkg =  
XSSFTestDataSamples.openSamplePackage("58747.xlsx")) {
-           ReadOnlySharedStringsTable strings = new 
ReadOnlySharedStringsTable(pkg);
-           assertNotNull(strings);
-           XSSFReader reader = new XSSFReader(pkg);
-           StylesTable styles = reader.getStylesTable();
-           assertNotNull(styles);
-
-           XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) 
reader.getSheetsData();
-           assertTrue(iter.hasNext());
-           iter.next();
-
-           assertFalse(iter.hasNext());
-           assertEquals("Orders", iter.getSheetName());
-       }
-   }
+    /**
+     * NPE from XSSFReader$SheetIterator.<init> on XLSX files generated by
+     * the openpyxl library
+     */
+    @Test
+    void test58747() throws Exception {
+        try (OPCPackage pkg = 
XSSFTestDataSamples.openSamplePackage("58747.xlsx")) {
+            ReadOnlySharedStringsTable strings = new 
ReadOnlySharedStringsTable(pkg);
+            assertNotNull(strings);
+            XSSFReader reader = new XSSFReader(pkg);
+            StylesTable styles = reader.getStylesTable();
+            assertNotNull(styles);
+
+            XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) 
reader.getSheetsData();
+            assertTrue(iter.hasNext());
+            assertNotNull(iter.next());
+
+            assertFalse(iter.hasNext());
+            assertEquals("Orders", iter.getSheetName());
+        }
+    }
 
     /**
      * NPE when sheet has no relationship id in the workbook
@@ -329,6 +330,7 @@ public final class TestXSSFReader {
     }
 
     @Disabled("until we fix issue 
https://bz.apache.org/bugzilla/show_bug.cgi?id=61701";)
+    @Test
     void test61701() throws Exception {
         try(Workbook workbook = 
XSSFTestDataSamples.openSampleWorkbook("simple-table-named-range.xlsx")) {
             Name name = workbook.getName("total");
@@ -353,15 +355,17 @@ public final class TestXSSFReader {
     }
 
     @Test
-    void testStrictOoxmlNotAllowed() throws Exception {
+    void testStrictOoxmlNotAllowed() {
         assertThrows(POIXMLException.class, () -> {
             try (OPCPackage pkg = 
OPCPackage.open(_ssTests.openResourceAsStream("sample.strict.xlsx"))) {
                 XSSFReader reader = new XSSFReader(pkg);
+                assertNotNull(reader);
             }
         });
         assertThrows(POIXMLException.class, () -> {
             try (OPCPackage pkg = 
OPCPackage.open(_ssTests.openResourceAsStream("sample.strict.xlsx"))) {
                 XSSFReader reader = new XSSFReader(pkg, false);
+                assertNotNull(reader);
             }
         });
     }
@@ -435,4 +439,16 @@ public final class TestXSSFReader {
 
         return Base64.getEncoder().encodeToString(md.digest());
     }
+
+    @Test
+    public void testMissingLiteFile() throws IOException, OpenXML4JException {
+        try (OPCPackage pkg = OPCPackage.open(_ssTests.openResourceAsStream(
+                
"clusterfuzz-testcase-minimized-XLSX2CSVFuzzer-6594557414080512.xlsx"))) {
+            XSSFReader xssfReader = new XSSFReader(pkg);
+            assertThrows(IOException.class,
+                    xssfReader::getStylesTable,
+                    "The file is broken, but triggers loading of some 
additional resources which would "
+                            + "be missing in the ooxml-lite package 
otherwise.");
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to