Author: centic
Date: Wed Dec  6 19:49:52 2023
New Revision: 1914404

URL: http://svn.apache.org/viewvc?rev=1914404&view=rev
Log:
Bug 66425: Avoid exceptions found via poi-fuzz

Avoid a ClassCastException and trigger some more
code in integration-testing.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63358

Added:
    
poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls
Modified:
    
poi/trunk/poi-integration/src/test/java/org/apache/poi/stress/AbstractFileHandler.java
    poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java
    poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java
    poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java
    poi/trunk/test-data/spreadsheet/stress.xls

Modified: 
poi/trunk/poi-integration/src/test/java/org/apache/poi/stress/AbstractFileHandler.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-integration/src/test/java/org/apache/poi/stress/AbstractFileHandler.java?rev=1914404&r1=1914403&r2=1914404&view=diff
==============================================================================
--- 
poi/trunk/poi-integration/src/test/java/org/apache/poi/stress/AbstractFileHandler.java
 (original)
+++ 
poi/trunk/poi-integration/src/test/java/org/apache/poi/stress/AbstractFileHandler.java
 Wed Dec  6 19:49:52 2023
@@ -109,13 +109,38 @@ public abstract class AbstractFileHandle
                 assertEquals(modified, file.lastModified(), "File should not 
be modified by extractor");
 
                 if (extractor instanceof POIOLE2TextExtractor) {
-                    try (HPSFPropertiesExtractor hpsfExtractor = new 
HPSFPropertiesExtractor((POIOLE2TextExtractor) extractor)) {
+                    POIOLE2TextExtractor ole2Extractor = 
(POIOLE2TextExtractor) extractor;
+                    ole2Extractor.getRoot();
+                    if (!(ole2Extractor instanceof EventBasedExcelExtractor)) {
+                        ole2Extractor.getSummaryInformation();
+                        ole2Extractor.getDocSummaryInformation();
+                    }
+
+                    try (HPSFPropertiesExtractor hpsfExtractor = new 
HPSFPropertiesExtractor(ole2Extractor)) {
                         
assertNotNull(hpsfExtractor.getDocumentSummaryInformationText());
                         
assertNotNull(hpsfExtractor.getSummaryInformationText());
                         String text = hpsfExtractor.getText();
                         //System.out.println(text);
                         assertNotNull(text);
                     }
+
+                    if (ole2Extractor.getRoot() != null && 
!Boolean.getBoolean("scratchpad.ignore")) {
+                        POITextExtractor[] embedded = 
ExtractorFactory.getEmbeddedDocsTextExtractors(ole2Extractor);
+                        try {
+                            for (POITextExtractor poiTextExtractor : embedded) 
{
+                                poiTextExtractor.getText();
+                                poiTextExtractor.getDocument();
+                                poiTextExtractor.getFilesystem();
+                                POITextExtractor metaData = 
poiTextExtractor.getMetadataTextExtractor();
+                                metaData.getFilesystem();
+                                metaData.getText();
+                            }
+                        } finally {
+                            for (POITextExtractor embeddedExtractor : 
embedded) {
+                                embeddedExtractor.close();
+                            }
+                        }
+                    }
                 }
 
                 // test again with including formulas and cell-comments as 
this caused some bugs
@@ -166,6 +191,8 @@ public abstract class AbstractFileHandle
                 assertNotNull(streamExtractor);
 
                 assertNotNull(streamExtractor.getText());
+
+                assertNotNull(streamExtractor.getMetadataTextExtractor());
             }
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java?rev=1914404&r1=1914403&r2=1914404&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java 
Wed Dec  6 19:49:52 2023
@@ -373,7 +373,9 @@ public final class ExtractorFactory {
 
         ArrayList<POITextExtractor> textExtractors = new ArrayList<>();
         for (Entry dir : dirs) {
-            textExtractors.add(createExtractor((DirectoryNode) dir));
+            if (dir instanceof DirectoryNode) {
+                textExtractors.add(createExtractor((DirectoryNode) dir));
+            }
         }
         for (InputStream stream : nonPOIFS) {
             try {

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java?rev=1914404&r1=1914403&r2=1914404&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java 
(original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java Wed 
Dec  6 19:49:52 2023
@@ -44,6 +44,7 @@ class TestBiffViewer extends BaseTestIte
         excludes.put("protected_66115.xls", RecordFormatException.class);
         
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5786329142919168.xls",
 IllegalStateException.class);
         
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5889658057523200.xls",
 IndexOutOfBoundsException.class);
+        
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls",
 IndexOutOfBoundsException.class);
 
         return excludes;
     }

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java?rev=1914404&r1=1914403&r2=1914404&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java 
(original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java 
Wed Dec  6 19:49:52 2023
@@ -47,6 +47,7 @@ class TestRecordLister extends BaseTestI
         Map<String, Class<? extends Throwable>> excludes = super.getExcludes();
         
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5786329142919168.xls",
 RecordFormatException.class);
         
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5889658057523200.xls",
 IndexOutOfBoundsException.class);
+        
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls",
 RecordFormatException.class);
         return excludes;
     }
 

Added: 
poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls?rev=1914404&view=auto
==============================================================================
Binary files 
poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls
 (added) and 
poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls
 Wed Dec  6 19:49:52 2023 differ

Modified: poi/trunk/test-data/spreadsheet/stress.xls
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/stress.xls?rev=1914404&r1=1914403&r2=1914404&view=diff
==============================================================================
Binary files - no diff available.



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

Reply via email to