diff options
author | Dominik Stadler <centic@apache.org> | 2024-04-17 18:15:46 +0000 |
---|---|---|
committer | Dominik Stadler <centic@apache.org> | 2024-04-17 18:15:46 +0000 |
commit | 9453fa908ae9a0c9a602725f4d5e1d6994b2b3f3 (patch) | |
tree | 388e0ae83e242efde7dabdc692f9e6317c40203e /poi | |
parent | c4e8388742ab1e6818306df38aa0095742828f5d (diff) | |
download | poi-9453fa908ae9a0c9a602725f4d5e1d6994b2b3f3.tar.gz poi-9453fa908ae9a0c9a602725f4d5e1d6994b2b3f3.zip |
Bug 66425: Avoid exceptions found via poi-fuzz
Use correct default date-format, add some tests
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66381
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1917070 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi')
4 files changed, 37 insertions, 1 deletions
diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java b/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java index 35e5ff55d6..f94e6893f7 100644 --- a/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -922,7 +922,7 @@ public class DataFormatter { sdf.setTimeZone(LocaleUtil.getUserTimeZone()); dateFormat = sdf; } else { - dateFormat = defaultNumFormat; + dateFormat = defaultDateformat; } } synchronized (dateFormat) { diff --git a/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java b/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java index 491d68d159..d23f1dbece 100644 --- a/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java +++ b/poi/src/test/java/org/apache/poi/hssf/dev/TestBiffViewer.java @@ -46,6 +46,7 @@ class TestBiffViewer extends BaseTestIteratingXLS { excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5889658057523200.xls", IndexOutOfBoundsException.class); 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); return excludes; } diff --git a/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java b/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java index 7f1c1f4561..34359e1d2e 100644 --- a/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java +++ b/poi/src/test/java/org/apache/poi/hssf/dev/TestRecordLister.java @@ -49,6 +49,7 @@ class TestRecordLister extends BaseTestIteratingXLS { excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5889658057523200.xls", IndexOutOfBoundsException.class); 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); return excludes; } diff --git a/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java b/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java index 0d6c1af5b9..31cfa031b0 100644 --- a/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java +++ b/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java @@ -35,6 +35,8 @@ import java.util.Locale; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; +import javax.swing.text.DateFormatter; + import org.apache.poi.POITestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -1162,4 +1164,36 @@ class TestDataFormatter { return true; } + @Test + public void testFormatCellValue() throws IOException { + DataFormatter df = new DataFormatter(); + + assertEquals("", df.formatCellValue(null)); + + try (Workbook wb = new HSSFWorkbook()) { + Cell cell = wb.createSheet("test").createRow(0).createCell(0); + assertEquals("", df.formatCellValue(cell)); + + cell.setCellValue(123); + assertEquals("123", df.formatCellValue(cell)); + + cell.setCellValue(new Date(234092383)); + assertEquals("25571.75107", df.formatCellValue(cell)); + + cell.setCellValue("abcdefgh"); + assertEquals("abcdefgh", df.formatCellValue(cell)); + + cell.setCellValue(true); + assertEquals("TRUE", df.formatCellValue(cell)); + + CellStyle cellStyle = wb.createCellStyle(); + cellStyle.setDataFormat((short)14); + cell.setCellStyle(cellStyle); + cell.setCellValue(new Date(234092383)); + assertEquals("1/3/70", df.formatCellValue(cell)); + + cellStyle.setDataFormat((short)9999); + assertEquals("25571.751069247686", df.formatCellValue(cell)); + } + } } |