View | Details | Raw Unified | Return to bug 27929
Collapse All | Expand All

(-)jakarta-poi/src/java/org/apache/poi/hssf/record/ObjRecord.java (-2 / +2 lines)
Lines 97-104 Link Here
97
            short subRecordSid = LittleEndian.getShort(data, pos);
97
            short subRecordSid = LittleEndian.getShort(data, pos);
98
            short subRecordSize = LittleEndian.getShort(data, pos + 2);
98
            short subRecordSize = LittleEndian.getShort(data, pos + 2);
99
            Record subRecord = SubRecord.createSubRecord(subRecordSid, subRecordSize, data, pos + 4);
99
            Record subRecord = SubRecord.createSubRecord(subRecordSid, subRecordSize, data, pos + 4);
100
            subrecords.add(subRecord);
100
            subrecords.add( subRecord);
101
            pos += 4 + subRecordSize;
101
            pos += subRecord.getRecordSize();
102
        }
102
        }
103
103
104
    }
104
    }
(-)jakarta-poi/src/java/org/apache/poi/hssf/record/SubRecord.java (-4 / +13 lines)
Lines 42-60 Link Here
42
    {
42
    {
43
        Record r = null;
43
        Record r = null;
44
44
45
        short adjustedSize = size;
46
        if( size < 0) {
47
           adjustedSize = 0;
48
        } else if( offset + size > data.length) {
49
           adjustedSize = (short) (data.length - offset);
50
           if( adjustedSize > 4) {
51
              adjustedSize -= 4;
52
           }
53
        }
45
        switch ( subRecordSid )
54
        switch ( subRecordSid )
46
        {
55
        {
47
            case CommonObjectDataSubRecord.sid:
56
            case CommonObjectDataSubRecord.sid:
48
                r = new CommonObjectDataSubRecord( subRecordSid, size, data, offset );
57
                r = new CommonObjectDataSubRecord( subRecordSid, adjustedSize, data, offset );
49
                break;
58
                break;
50
            case GroupMarkerSubRecord.sid:
59
            case GroupMarkerSubRecord.sid:
51
                r = new GroupMarkerSubRecord( subRecordSid, size, data, offset );
60
                r = new GroupMarkerSubRecord( subRecordSid, adjustedSize, data, offset );
52
                break;
61
                break;
53
            case EndSubRecord.sid:
62
            case EndSubRecord.sid:
54
                r = new EndSubRecord( subRecordSid, size, data, offset );
63
                r = new EndSubRecord( subRecordSid, adjustedSize, data, offset );
55
                break;
64
                break;
56
            default:
65
            default:
57
                r = new UnknownRecord( subRecordSid, size, data, offset );
66
                r = new UnknownRecord( subRecordSid, adjustedSize, data, offset );
58
        }
67
        }
59
68
60
        return r;
69
        return r;

Return to bug 27929