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 2026/10/21 09:57:56 UTC
(poi) branch adjust_fuzzing_and_avoid_npe created (now e00b41c746)
This is an automated email from the ASF dual-hosted git repository.
centic9 pushed a change to branch adjust_fuzzing_and_avoid_npe
in repository https://gitbox.apache.org/repos/asf/poi.git
at e00b41c746 Fuzzing: Expect ArithmeticException in some places
This branch includes the following new commits:
new 1b71d3a4a9 Avoid NPE found by fuzzing
new e00b41c746 Fuzzing: Expect ArithmeticException in some places
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org
(poi) 02/02: Fuzzing: Expect ArithmeticException in some places
Posted by ce...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
centic9 pushed a commit to branch adjust_fuzzing_and_avoid_npe
in repository https://gitbox.apache.org/repos/asf/poi.git
commit e00b41c7463e4a210f70cebac402f3869dde2f87
Author: Dominik Stadler <do...@dynatrace.com>
AuthorDate: Wed Oct 21 10:11:26 2026 +0200
Fuzzing: Expect ArithmeticException in some places
This is sometimes triggered by Math.toIntExact()
on invalid input.
---
.../java/org/apache/poi/fuzz/FormulaParserFuzzer.java | 2 +-
.../src/main/java/org/apache/poi/fuzz/POIFuzzer.java | 16 ++++++++--------
.../src/main/java/org/apache/poi/fuzz/POIHDGFFuzzer.java | 1 -
.../src/main/java/org/apache/poi/fuzz/POIHMEFFuzzer.java | 1 -
.../src/main/java/org/apache/poi/fuzz/POIHPSFFuzzer.java | 1 -
.../src/main/java/org/apache/poi/fuzz/POIHSSFFuzzer.java | 1 -
.../src/main/java/org/apache/poi/fuzz/POIHWPFFuzzer.java | 12 +++++++-----
.../src/main/java/org/apache/poi/fuzz/POIXSSFFuzzer.java | 6 ++++--
.../main/java/org/apache/poi/fuzz/XLSX2CSVFuzzer.java | 10 +++++-----
9 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/FormulaParserFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/FormulaParserFuzzer.java
index b8c1ddacc1..6107ba7662 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/FormulaParserFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/FormulaParserFuzzer.java
@@ -20,9 +20,9 @@ package org.apache.poi.fuzz;
import com.code_intelligence.jazzer.api.FuzzedDataProvider;
import org.apache.poi.hssf.usermodel.HSSFEvaluationWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.formula.FormulaParseException;
import org.apache.poi.ss.formula.FormulaParser;
import org.apache.poi.ss.formula.FormulaType;
-import org.apache.poi.ss.formula.FormulaParseException;
import org.apache.poi.util.RecordFormatException;
import java.nio.BufferUnderflowException;
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIFuzzer.java
index f0f4c0b567..646cd27485 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIFuzzer.java
@@ -108,7 +108,8 @@ public class POIFuzzer {
} catch (IOException | POIXMLException | IllegalArgumentException | RecordFormatException |
IndexOutOfBoundsException | HSLFException | RecordInputStream.LeftoverDataException |
IllegalStateException | BufferUnderflowException | OpenXML4JRuntimeException |
- UnsupportedOperationException | NoSuchElementException | NegativeArraySizeException e) {
+ UnsupportedOperationException | NoSuchElementException | NegativeArraySizeException |
+ ArithmeticException e) {
// expected here
}
@@ -141,13 +142,13 @@ public class POIFuzzer {
}
try {
extractor.getText();
- } catch (OpenXML4JRuntimeException e) {
+ } catch (OpenXML4JRuntimeException |
+ ArithmeticException e) {
// can happen here
}
- if (extractor instanceof POIOLE2TextExtractor) {
- POIOLE2TextExtractor ole2Extractor = (POIOLE2TextExtractor) extractor;
- ole2Extractor.getRoot();
+ if (extractor instanceof POIOLE2TextExtractor ole2Extractor) {
+ ole2Extractor.getRoot();
ole2Extractor.getSummaryInformation();
ole2Extractor.getDocSummaryInformation();
@@ -160,9 +161,8 @@ public class POIFuzzer {
metaData.getFilesystem();
metaData.getText();
}
- } else if (extractor instanceof POIXMLTextExtractor) {
- POIXMLTextExtractor xmlExtractor = (POIXMLTextExtractor) extractor;
- xmlExtractor.getCoreProperties();
+ } else if (extractor instanceof POIXMLTextExtractor xmlExtractor) {
+ xmlExtractor.getCoreProperties();
xmlExtractor.getCustomProperties();
xmlExtractor.getExtendedProperties();
POIXMLPropertiesTextExtractor metaData = xmlExtractor.getMetadataTextExtractor();
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHDGFFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHDGFFuzzer.java
index 1907038513..544ba80709 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHDGFFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHDGFFuzzer.java
@@ -23,7 +23,6 @@ import java.nio.BufferUnderflowException;
import java.util.NoSuchElementException;
import org.apache.commons.io.output.NullOutputStream;
-import org.apache.poi.fuzz.POIFuzzer;
import org.apache.poi.hdgf.HDGFDiagram;
import org.apache.poi.hdgf.extractor.VisioTextExtractor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHMEFFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHMEFFuzzer.java
index 5e32593f43..4ad7d48290 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHMEFFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHMEFFuzzer.java
@@ -20,7 +20,6 @@ package org.apache.poi.fuzz;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import org.apache.poi.fuzz.POIFuzzer;
import org.apache.poi.hmef.HMEFMessage;
import org.apache.poi.util.RecordFormatException;
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHPSFFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHPSFFuzzer.java
index 022c5cb331..916f3d890a 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHPSFFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHPSFFuzzer.java
@@ -23,7 +23,6 @@ import java.nio.BufferUnderflowException;
import java.util.NoSuchElementException;
import org.apache.commons.io.output.NullOutputStream;
-import org.apache.poi.fuzz.POIFuzzer;
import org.apache.poi.hpsf.HPSFPropertiesOnlyDocument;
import org.apache.poi.hpsf.extractor.HPSFPropertiesExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHSSFFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHSSFFuzzer.java
index 2c4552a7bf..986e431aa8 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHSSFFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHSSFFuzzer.java
@@ -23,7 +23,6 @@ import java.nio.BufferUnderflowException;
import java.util.NoSuchElementException;
import org.apache.commons.io.output.NullOutputStream;
-import org.apache.poi.fuzz.POIFuzzer;
import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.record.RecordInputStream;
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHWPFFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHWPFFuzzer.java
index d487c131ac..9a568607ca 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHWPFFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIHWPFFuzzer.java
@@ -39,8 +39,9 @@ public class POIHWPFFuzzer {
try (HWPFDocument doc = new HWPFDocument(new ByteArrayInputStream(input))) {
doc.write(NullOutputStream.INSTANCE);
} catch (IOException | IllegalArgumentException | IndexOutOfBoundsException | BufferUnderflowException |
- NoSuchElementException | RecordFormatException | IllegalStateException |
- UnsupportedOperationException | NegativeArraySizeException e) {
+ NoSuchElementException | RecordFormatException | IllegalStateException |
+ UnsupportedOperationException | NegativeArraySizeException |
+ ArithmeticException e) {
// expected here
}
@@ -50,9 +51,10 @@ public class POIHWPFFuzzer {
POIFuzzer.checkExtractor(extractor);
}
} catch (IOException | IllegalArgumentException | IndexOutOfBoundsException | BufferUnderflowException |
- NoSuchElementException | RecordFormatException | IllegalStateException |
- DocumentFormatException | UnsupportedOperationException | NegativeArraySizeException |
- RecordInputStream.LeftoverDataException e) {
+ NoSuchElementException | RecordFormatException | IllegalStateException |
+ DocumentFormatException | UnsupportedOperationException | NegativeArraySizeException |
+ RecordInputStream.LeftoverDataException |
+ ArithmeticException e) {
// expected here
}
}
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIXSSFFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIXSSFFuzzer.java
index 4cf7f3de12..51ddba5665 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIXSSFFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/POIXSSFFuzzer.java
@@ -42,7 +42,8 @@ public class POIXSSFFuzzer {
swb.write(NullOutputStream.INSTANCE);
}
} catch (IOException | POIXMLException | RecordFormatException | IllegalStateException |
- OpenXML4JRuntimeException | IllegalArgumentException | IndexOutOfBoundsException e) {
+ OpenXML4JRuntimeException | IllegalArgumentException | IndexOutOfBoundsException |
+ ArithmeticException e) {
// expected here
}
@@ -51,7 +52,8 @@ public class POIXSSFFuzzer {
POIFuzzer.checkExtractor(extractor);
}
} catch (IOException | XmlException | OpenXML4JException | POIXMLException | RecordFormatException |
- IllegalStateException | IllegalArgumentException | IndexOutOfBoundsException e) {
+ IllegalStateException | IllegalArgumentException | IndexOutOfBoundsException |
+ ArithmeticException e) {
// expected
} catch (NullPointerException e) {
if (!e.getMessage().startsWith("Cannot invoke \"java.io.InputStream.read(byte[], int, int)\"")) {
diff --git a/poi-fuzz/src/main/java/org/apache/poi/fuzz/XLSX2CSVFuzzer.java b/poi-fuzz/src/main/java/org/apache/poi/fuzz/XLSX2CSVFuzzer.java
index 0cb610544d..1d6bd407ce 100644
--- a/poi-fuzz/src/main/java/org/apache/poi/fuzz/XLSX2CSVFuzzer.java
+++ b/poi-fuzz/src/main/java/org/apache/poi/fuzz/XLSX2CSVFuzzer.java
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.output.NullPrintStream;
-import org.apache.poi.fuzz.POIFuzzer;
import org.apache.poi.examples.xssf.eventusermodel.XLSX2CSV;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
@@ -42,10 +41,11 @@ public class XLSX2CSVFuzzer {
XLSX2CSV xlsx2csv = new XLSX2CSV(p, NullPrintStream.INSTANCE, 5);
xlsx2csv.process();
} catch (IOException | OpenXML4JException | SAXException |
- POIXMLException | RecordFormatException |
- IllegalStateException | IllegalArgumentException |
- IndexOutOfBoundsException | OpenXML4JRuntimeException e) {
+ POIXMLException | RecordFormatException |
+ IllegalStateException | IllegalArgumentException |
+ IndexOutOfBoundsException | OpenXML4JRuntimeException |
+ ArithmeticException e) {
// expected here
}
}
-}
\ No newline at end of file
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org
(poi) 01/02: Avoid NPE found by fuzzing
Posted by ce...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
centic9 pushed a commit to branch adjust_fuzzing_and_avoid_npe
in repository https://gitbox.apache.org/repos/asf/poi.git
commit 1b71d3a4a99168762a3bdfa1c9f1e5bfa5ca4c14
Author: Dominik Stadler <do...@dynatrace.com>
AuthorDate: Wed Oct 21 08:52:50 2026 +0200
Avoid NPE found by fuzzing
---
.../main/java/org/apache/poi/hssf/model/InternalSheet.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/poi/src/main/java/org/apache/poi/hssf/model/InternalSheet.java b/poi/src/main/java/org/apache/poi/hssf/model/InternalSheet.java
index 2098360aae..9b0dbac2ce 100644
--- a/poi/src/main/java/org/apache/poi/hssf/model/InternalSheet.java
+++ b/poi/src/main/java/org/apache/poi/hssf/model/InternalSheet.java
@@ -446,7 +446,8 @@ public final class InternalSheet {
_rowsAggregate = new RowRecordsAggregate();
records.add(_rowsAggregate);
// 'Sheet View Settings'
- records.add(windowTwo = createWindowTwo());
+ windowTwo = createWindowTwo();
+ records.add(windowTwo);
_selection = createSelection();
records.add(_selection);
@@ -1023,10 +1024,13 @@ public final class InternalSheet {
* index of the default ExtendedFormatRecord (0xF)
*/
public short getXFIndexForColAt(short columnIndex) {
- ColumnInfoRecord ci = _columnInfos.findColumnInfo(columnIndex);
- if (ci != null) {
- return (short)ci.getXFIndex();
+ if (_columnInfos != null) {
+ ColumnInfoRecord ci = _columnInfos.findColumnInfo(columnIndex);
+ if (ci != null) {
+ return (short) ci.getXFIndex();
+ }
}
+
return 0xF;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org