Bug 61286

Summary: can not deal with WriteProtectRecord element
Product: POI Reporter: lejingw <lejingw>
Component: HSSFAssignee: POI Developers List <dev>
Severity: critical    
Priority: P2    
Version: 3.16-FINAL   
Target Milestone: ---   
Hardware: PC   
OS: Mac OS X 10.1   
Attachments: the excel to be read
the excel to be read with exception
consume the remaining bytes

Description lejingw 2017-07-13 02:26:16 UTC
Created attachment 35124 [details]
the excel to be read

HSSF can not deal with WriteProtectRecord element which is created by MS Excel 97(in the attachment).

the constructor method `WriteProtectRecord(RecordInputStream in)` of class `org.apache.poi.hssf.record.WriteProtectRecord` will not consume the right amount of byte in `org.apache.poi.hssf.record.RecordInputStream#_dataInput`, the amount to be consumed should be equals to `org.apache.poi.hssf.record.RecordInputStream#_currentDataLength`

The exception stack is as follows:

org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x86(WriteProtectRecord) left 2 bytes remaining still to be read.
	at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:177)
	at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:234)
	at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:494)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:348)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:405)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:386)
	at poi.HSSFReadWrite.readFile(HSSFReadWrite.java:53)
	at poi.HSSFReadWrite.common(HSSFReadWrite.java:170)
	at poi.HSSFReadWrite.testRead1(HSSFReadWrite.java:293)
Comment 1 Tim Allison 2017-07-13 17:14:59 UTC
This file is identical to the file you shared on 61287.  Would it be possible to re-attach either here or on 61287.  Thank you!
Comment 2 lejingw 2017-07-14 01:09:57 UTC
Created attachment 35134 [details]
the excel to be read with exception
Comment 3 lejingw 2017-07-14 01:17:38 UTC
Created attachment 35135 [details]
consume the remaining bytes

the exception also exist in 3.17-beta1
Comment 4 Tim Allison 2017-07-14 13:55:18 UTC
Thank you!