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]

Reply via email to