You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2024/04/22 13:32:30 UTC
svn commit: r1917269 - in /poi/trunk: poi/src/main/java/org/apache/poi/hpsf/ poi/src/test/java/org/apache/poi/hpsf/extractor/ poi/src/test/java/org/apache/poi/hssf/dev/ test-data/spreadsheet/
Author: centic
Date: Mon Apr 22 13:32:30 2024
New Revision: 1917269
URL: http://svn.apache.org/viewvc?rev=1917269&view=rev
Log:
Bug 66425: Avoid exceptions found via poi-fuzz
Avoid a possible NullPointerException
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=67922
Added:
poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5816431116615680.xls (with props)
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hpsf/DocumentSummaryInformation.java
poi/trunk/poi/src/test/java/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.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/src/main/java/org/apache/poi/hpsf/DocumentSummaryInformation.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/DocumentSummaryInformation.java?rev=1917269&r1=1917268&r2=1917269&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/DocumentSummaryInformation.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/DocumentSummaryInformation.java Mon Apr 22 13:32:30 2024
@@ -767,7 +767,7 @@ public class DocumentSummaryInformation
final long id = p.getID();
if (id == PropertyIDMap.PID_CODEPAGE) {
cps.setCodepage((Integer)p.getValue());
- } else if (id > PropertyIDMap.PID_CODEPAGE) {
+ } else if (id > PropertyIDMap.PID_CODEPAGE && dictionary != null) {
propertyCount++;
final CustomProperty cp = new CustomProperty(p, dictionary.get(id));
cps.put(cp.getName(), cp);
Modified: poi/trunk/poi/src/test/java/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java?rev=1917269&r1=1917268&r2=1917269&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java Mon Apr 22 13:32:30 2024
@@ -17,14 +17,11 @@
package org.apache.poi.hpsf.extractor;
-import static org.apache.poi.POITestCase.assertContains;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import java.io.IOException;
-import java.io.InputStream;
-
+import org.apache.commons.io.FileUtils;
import org.apache.poi.POIDataSamples;
+import org.apache.poi.extractor.ExtractorFactory;
+import org.apache.poi.extractor.POIOLE2TextExtractor;
+import org.apache.poi.extractor.POITextExtractor;
import org.apache.poi.hpsf.Thumbnail;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.extractor.ExcelExtractor;
@@ -32,6 +29,15 @@ import org.apache.poi.hssf.usermodel.HSS
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.junit.jupiter.api.Test;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import static org.apache.poi.POITestCase.assertContains;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
final class TestHPSFPropertiesExtractor {
private static final POIDataSamples _samples = POIDataSamples.getHPSFInstance();
@@ -179,4 +185,23 @@ final class TestHPSFPropertiesExtractor
assertContains(ext.getText(), "PID_CODEPAGE = 1252");
}
}
+
+ @Test
+ void testNPE() throws IOException {
+ final byte[] bytes = FileUtils.readFileToByteArray(
+ POIDataSamples.getSpreadSheetInstance().getFile(
+ "clusterfuzz-testcase-minimized-POIHSSFFuzzer-5816431116615680.xls"));
+ try (POITextExtractor extractor = ExtractorFactory.createExtractor(new ByteArrayInputStream(bytes))) {
+ assertInstanceOf(POIOLE2TextExtractor.class, extractor);
+
+ POIOLE2TextExtractor ole2Extractor = (POIOLE2TextExtractor) extractor;
+
+ POITextExtractor[] embedded = ExtractorFactory.getEmbeddedDocsTextExtractors(ole2Extractor);
+ assertEquals(1, embedded.length);
+ for (POITextExtractor poiTextExtractor : embedded) {
+ POITextExtractor metaData = poiTextExtractor.getMetadataTextExtractor();
+ metaData.getText();
+ }
+ }
+ }
}
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=1917269&r1=1917268&r2=1917269&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 Mon Apr 22 13:32:30 2024
@@ -47,6 +47,7 @@ class TestBiffViewer extends BaseTestIte
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls", IndexOutOfBoundsException.class);
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6137883240824832.xls", IndexOutOfBoundsException.class);
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls", IndexOutOfBoundsException.class);
+ excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5816431116615680.xls", RecordFormatException.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=1917269&r1=1917268&r2=1917269&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 Mon Apr 22 13:32:30 2024
@@ -50,6 +50,7 @@ class TestRecordLister extends BaseTestI
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls", RecordFormatException.class);
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6137883240824832.xls", RecordFormatException.class);
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls", RecordFormatException.class);
+ excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5816431116615680.xls", RecordFormatException.class);
return excludes;
}
Added: poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5816431116615680.xls
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5816431116615680.xls?rev=1917269&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-5816431116615680.xls
------------------------------------------------------------------------------
svn:mime-type = application/vnd.ms-excel
Modified: poi/trunk/test-data/spreadsheet/stress.xls
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/stress.xls?rev=1917269&r1=1917268&r2=1917269&view=diff
==============================================================================
Binary files - no diff available.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org