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]
