Author: centic Date: Wed Apr 17 18:15:46 2024 New Revision: 1917070 URL: http://svn.apache.org/viewvc?rev=1917070&view=rev Log: 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 Added: poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.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/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java poi/trunk/test-data/spreadsheet/stress.xls Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java?rev=1917070&r1=1917069&r2=1917070&view=diff ============================================================================== --- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java (original) +++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java Wed Apr 17 18:15:46 2024 @@ -21,6 +21,7 @@ import static org.apache.poi.xssf.XSSFTe import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; +import java.util.Date; import org.apache.poi.ss.formula.ConditionalFormattingEvaluator; import org.apache.poi.ss.formula.WorkbookEvaluatorProvider; @@ -120,4 +121,37 @@ public final class TestXSSFDataFormat ex assertEquals("6.75", formatter.formatCellValue(d1)); } } + + @Test + public void testFormatCellValue() throws IOException { + DataFormatter df = new DataFormatter(); + + assertEquals("", df.formatCellValue(null)); + + try (Workbook wb = new XSSFWorkbook()) { + 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)); + } + } } Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java?rev=1917070&r1=1917069&r2=1917070&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java Wed Apr 17 18:15:46 2024 @@ -922,7 +922,7 @@ public class DataFormatter { sdf.setTimeZone(LocaleUtil.getUserTimeZone()); dateFormat = sdf; } else { - dateFormat = defaultNumFormat; + dateFormat = defaultDateformat; } } synchronized (dateFormat) { 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=1917070&r1=1917069&r2=1917070&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 Apr 17 18:15:46 2024 @@ -46,6 +46,7 @@ class TestBiffViewer extends BaseTestIte 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; } 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=1917070&r1=1917069&r2=1917070&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 Apr 17 18:15:46 2024 @@ -49,6 +49,7 @@ class TestRecordLister extends BaseTestI 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; } Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java?rev=1917070&r1=1917069&r2=1917070&view=diff ============================================================================== --- poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java (original) +++ poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java Wed Apr 17 18:15:46 2024 @@ -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)); + } + } } Added: poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls?rev=1917070&view=auto ============================================================================== Binary files poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls (added) and poi/trunk/test-data/spreadsheet/clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls Wed Apr 17 18:15:46 2024 differ Modified: poi/trunk/test-data/spreadsheet/stress.xls URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/stress.xls?rev=1917070&r1=1917069&r2=1917070&view=diff ============================================================================== Binary files - no diff available. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
