aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2011-03-18 14:30:47 +0000
committerNick Burch <nick@apache.org>2011-03-18 14:30:47 +0000
commit0055c90bc4c90d223bcf95c0ad455db0de358b89 (patch)
treea03b93bac4bed7b17159c9a4d4a327ac1c44a1e8 /src/java/org/apache
parentd82c5b6336ff827147701aa0674bcce2830cc1d6 (diff)
downloadpoi-0055c90bc4c90d223bcf95c0ad455db0de358b89.tar.gz
poi-0055c90bc4c90d223bcf95c0ad455db0de358b89.zip
Fix bug #50939 - ChartEndObjectRecord is supposed to have 6 bytes at the end, but handle it not
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1082936 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache')
-rw-r--r--src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java b/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java
index 1452449600..3e9a86af28 100644
--- a/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java
+++ b/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java
@@ -33,15 +33,23 @@ public final class ChartEndObjectRecord extends StandardRecord {
private short rt;
private short grbitFrt;
private short iObjectKind;
- private byte[] unused;
+ private byte[] reserved;
public ChartEndObjectRecord(RecordInputStream in) {
rt = in.readShort();
grbitFrt = in.readShort();
iObjectKind = in.readShort();
- unused = new byte[6];
- in.readFully(unused);
+ // The spec says that there should be 6 bytes at the
+ // end, which must be there and must be zero
+ // However, sometimes Excel forgets them...
+ reserved = new byte[6];
+ if(in.available() == 0) {
+ // They've gone missing...
+ } else {
+ // Read the reserved bytes
+ in.readFully(reserved);
+ }
}
@Override
@@ -60,7 +68,7 @@ public final class ChartEndObjectRecord extends StandardRecord {
out.writeShort(grbitFrt);
out.writeShort(iObjectKind);
// 6 bytes unused
- out.write(unused);
+ out.write(reserved);
}
@Override
@@ -71,7 +79,7 @@ public final class ChartEndObjectRecord extends StandardRecord {
buffer.append(" .rt =").append(HexDump.shortToHex(rt)).append('\n');
buffer.append(" .grbitFrt =").append(HexDump.shortToHex(grbitFrt)).append('\n');
buffer.append(" .iObjectKind=").append(HexDump.shortToHex(iObjectKind)).append('\n');
- buffer.append(" .unused =").append(HexDump.toHex(unused)).append('\n');
+ buffer.append(" .reserved =").append(HexDump.toHex(reserved)).append('\n');
buffer.append("[/ENDOBJECT]\n");
return buffer.toString();
}