https://bz.apache.org/bugzilla/show_bug.cgi?id=61287
Bug ID: 61287
Summary: HeaderRecord or FooterRecord throws
RecordFormatException when the text of length 0
Product: POI
Version: 3.16-FINAL
Hardware: PC
OS: Mac OS X 10.1
Status: NEW
Severity: critical
Priority: P2
Component: HSSF
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
in the construtor method of
`org.apache.poi.hssf.record.HeaderFooterBase#HeaderFooterBase(org.apache.poi.hssf.record.RecordInputStream)`,
it will throw RecordFormatException in the method call `in.readByte()` when
variable field_1_footer_len equals to 0
the constrator is as follows:
protected HeaderFooterBase(RecordInputStream in) {
if (in.remaining() > 0) {
int field_1_footer_len = in.readShort();
field_2_hasMultibyte = in.readByte() != 0x00;
if (field_2_hasMultibyte) {
field_3_text =
in.readUnicodeLEString(field_1_footer_len);
} else {
field_3_text =
in.readCompressedUnicode(field_1_footer_len);
}
} else {
// Note - this is unusual for BIFF records in general,
but normal for header / footer records:
// when the text is empty string, the whole record is
empty (just the 4 byte BIFF header)
field_3_text = "";
}
}
and the exception stack is as follows:
org.apache.poi.hssf.record.RecordFormatException: Not enough data (0) to read
requested (1) bytes
at
org.apache.poi.hssf.record.RecordInputStream.checkRecordPosition(RecordInputStream.java:237)
at
org.apache.poi.hssf.record.RecordInputStream.readByte(RecordInputStream.java:246)
at
org.apache.poi.hssf.record.HeaderFooterBase.<init>(HeaderFooterBase.java:39)
at org.apache.poi.hssf.record.HeaderRecord.<init>(HeaderRecord.java:36)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at
org.apache.poi.hssf.record.RecordFactory$ReflectionConstructorRecordCreator.create(RecordFactory.java:84)
at
org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:345)
at
org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:288)
at
org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:254)
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)
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]