You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ta...@apache.org on 2020/02/10 17:38:30 UTC

svn commit: r1873863 - in /poi/trunk: src/integrationtest/org/apache/poi/ src/java/org/apache/poi/hssf/record/ src/testcases/org/apache/poi/hssf/dev/ src/testcases/org/apache/poi/hssf/extractor/ test-data/spreadsheet/

Author: tallison
Date: Mon Feb 10 17:38:29 2020
New Revision: 1873863

URL: http://svn.apache.org/viewvc?rev=1873863&view=rev
Log:
Bug 64130 -- handle empty worksheet names in OldSheetRecord more robustly.

Added:
    poi/trunk/test-data/spreadsheet/64130.xls   (with props)
Modified:
    poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java
    poi/trunk/src/java/org/apache/poi/hssf/record/OldSheetRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java
    poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java

Modified: poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java (original)
+++ poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java Mon Feb 10 17:38:29 2020
@@ -327,6 +327,7 @@ public class TestAllFiles {
         "spreadsheet/testEXCEL_95.xls",
         "spreadsheet/59074.xls",
         "spreadsheet/60284.xls",
+        "spreadsheet/64130.xls",
 
         // OOXML Strict is not yet supported, see bug #57699
         "spreadsheet/SampleSS.strict.xlsx",

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/OldSheetRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/OldSheetRecord.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/OldSheetRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/OldSheetRecord.java Mon Feb 10 17:38:29 2020
@@ -47,15 +47,17 @@ public final class OldSheetRecord {
         field_2_visibility = in.readUByte();
         field_3_type = in.readUByte();
         int field_4_sheetname_length = in.readUByte();
-        in.mark(1);
-        byte b = in.readByte();
-        // if the sheet name starts with a 0, we need to skip one byte, otherwise the following records will
-        // fail with a LeftOverDataException
-        if (b != 0) {
-            try {
-                in.reset();
-            } catch (IOException e) {
-                throw new RecordFormatException(e);
+        if (field_4_sheetname_length > 0) {
+            in.mark(1);
+            byte b = in.readByte();
+            // if the sheet name starts with a 0, we need to skip one byte, otherwise the following records will
+            // fail with a LeftOverDataException
+            if (b != 0) {
+                try {
+                    in.reset();
+                } catch (IOException e) {
+                    throw new RecordFormatException(e);
+                }
             }
         }
         field_5_sheetname = IOUtils.safelyAllocate(field_4_sheetname_length, MAX_RECORD_LENGTH);

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java Mon Feb 10 17:38:29 2020
@@ -45,6 +45,7 @@ public class TestBiffDrawingToXml extend
         EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class);  // HSSFWorkbook cannot open it as well
         EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
         EXCLUDED.put("61300.xls", RecordFormatException.class);
+        EXCLUDED.put("64130.xls", OldExcelFormatException.class); // BIFF 5
     }
 	
 	@Override

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java Mon Feb 10 17:38:29 2020
@@ -54,6 +54,7 @@ public class TestBiffViewer extends Base
         EXCLUDED.put("50833.xls", IllegalArgumentException.class);       // "Name is too long" when setting username
         EXCLUDED.put("XRefCalc.xls", RuntimeException.class);            // "Buffer overrun"
         EXCLUDED.put("61300.xls", RecordFormatException.class);
+        EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
     }
 
     @Override

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java Mon Feb 10 17:38:29 2020
@@ -47,6 +47,7 @@ public class TestEFBiffViewer extends Ba
         EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
         EXCLUDED.put("XRefCalc.xls", RuntimeException.class);            // "Buffer overrun"
         EXCLUDED.put("61300.xls", RecordFormatException.class);
+        EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
     }
 	
 	@Override

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java Mon Feb 10 17:38:29 2020
@@ -47,6 +47,7 @@ public class TestFormulaViewer extends B
         EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class);  // HSSFWorkbook cannot open it as well
         EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
         EXCLUDED.put("61300.xls", RecordFormatException.class);
+        EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
     }
 	
     @Override

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java Mon Feb 10 17:38:29 2020
@@ -51,6 +51,7 @@ public class TestReSave extends BaseXLSI
         EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
         EXCLUDED.put("XRefCalc.xls", RuntimeException.class);            // "Buffer overrun"
         EXCLUDED.put("61300.xls", RecordFormatException.class);
+        EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
     }
 
 	@Override

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java Mon Feb 10 17:38:29 2020
@@ -38,7 +38,7 @@ public class TestRecordLister extends Ba
         EXCLUDED.put("60284.xls", OldExcelFormatException.class); // Biff 5 / Excel 5
         EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
         EXCLUDED.put("61300.xls", RecordFormatException.class);
-
+        EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
     }
 	
 	@Override

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java?rev=1873863&r1=1873862&r2=1873863&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java Mon Feb 10 17:38:29 2020
@@ -267,6 +267,10 @@ public final class TestOldExcelExtractor
 
     @Test
     public void testInputStreamNPOIHeader() throws IOException {
+        //TODO: the worksheet names are currently mangled.  They're treated
+        //as if UTF-16, but they're just ascii.  Need to fix this.
+        //Is it possible that the leading 0 byte in the worksheet name is a signal
+        //that these worksheet names should be interpreted as ascii/1252?
         File file = HSSFTestDataSamples.getSampleFile("FormulaRefs.xls");
         try (InputStream stream = new FileInputStream(file);
              OldExcelExtractor extractor = new OldExcelExtractor(stream)) {
@@ -350,6 +354,17 @@ public final class TestOldExcelExtractor
         }
     }
 
+    @Test
+    public void testSheetWithNoName() throws IOException {
+        File file = HSSFTestDataSamples.getSampleFile("64130.xls");
+
+        try (OldExcelExtractor ex = new OldExcelExtractor(file)) {
+            assertEquals(5, ex.getBiffVersion());
+            assertEquals(5, ex.getFileType());
+            assertContains(ex.getText(), "Dawn");
+        }
+    }
+
     private static class NoExitSecurityManager extends SecurityManager {
         @Override
         public void checkPermission(Permission perm) {

Added: poi/trunk/test-data/spreadsheet/64130.xls
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/64130.xls?rev=1873863&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/64130.xls
------------------------------------------------------------------------------
    svn:mime-type = application/vnd.ms-excel



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org