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