Author: tallison
Date: Fri Jul 14 13:54:06 2017
New Revision: 1801966

URL: http://svn.apache.org/viewvc?rev=1801966&view=rev
Log:
bug 61286/bug 61287 -- allow WriteProtectRecord to have 2 bytes, and allow for 
HeaderFooter to be empty.

Added:
    poi/trunk/test-data/spreadsheet/61287.xls   (with props)
Modified:
    poi/site/src/documentation/content/xdocs/status.xml
    poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java
    poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java

Modified: poi/site/src/documentation/content/xdocs/status.xml
URL: 
http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Fri Jul 14 13:54:06 2017
@@ -58,6 +58,7 @@
 
     <release version="3.17-beta2" date="2017-09-??">
       <actions>
+        <action dev="PD" type="fix" fixes-bug="61286,21687" 
module="HSSF">Handle zero-length headerfooter and 2 byte 
WriteProtectRecord</action>
         <action dev="PD" type="fix" fixes-bug="github-43" module="SS 
Common">RoundUp and RoundDown functions round incorrectly in some 
scenarios</action>
         <action dev="PD" type="fix" fixes-bug="61294" module="POI Overall">Fix 
bug that allowed IOUtils.skipFully to enter infinite loop</action>
         <action dev="PD" type="fix" fixes-bug="61266" module="POIFS">More 
helpful exception on unsupported old MS Write WRI files</action>

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java Fri Jul 
14 13:54:06 2017
@@ -36,6 +36,13 @@ public abstract class HeaderFooterBase e
        protected HeaderFooterBase(RecordInputStream in) {
                if (in.remaining() > 0) {
                        int field_1_footer_len = in.readShort();
+                       //61287 -- if the footer_len == 0, there may not be a 
multibyte flag
+                       if (field_1_footer_len == 0) {
+                               field_3_text = "";
+                               if (in.remaining() == 0) {
+                                       return;
+                               }
+                       }
                        field_2_hasMultibyte = in.readByte() != 0x00;
 
                        if (field_2_hasMultibyte) {

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java Fri 
Jul 14 13:54:06 2017
@@ -37,6 +37,9 @@ public final class WriteProtectRecord ex
      */
     public WriteProtectRecord(RecordInputStream in)
     {
+        if (in.remaining() == 2) {
+            in.readShort();
+        }
     }
 
     public String toString()

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Fri Jul 
14 13:54:06 2017
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertSam
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -43,8 +44,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import javax.imageio.ImageIO;
-
 import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.hssf.HSSFITestDataProvider;
 import org.apache.poi.hssf.HSSFTestDataSamples;
@@ -3096,4 +3095,14 @@ public final class TestBugs extends Base
         wb.getCreationHelper().createFormulaEvaluator().evaluateAll();
         wb.close();
     }
+
+    @Test
+    public void test61287() throws IOException {
+        final Workbook wb = 
HSSFTestDataSamples.openSampleWorkbook("61287.xls");
+        ExcelExtractor ex = new ExcelExtractor((HSSFWorkbook)wb);
+        String text = ex.getText();
+        assertContains(text, "资产负债表");
+        wb.close();
+    }
+
 }

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

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



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to