From: Maxim Valyanskiy Date: Mon, 27 Sep 2010 12:50:36 +0000 (+0000) Subject: hwpt: add more 2 bytes to OldSectionTable to solve ArrayIndexOutOfBoundsException X-Git-Tag: POI-3.7~18 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2c2440922921cd53c20fb6168d2888a9b0c88a35;p=poi.git hwpt: add more 2 bytes to OldSectionTable to solve ArrayIndexOutOfBoundsException git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1001712 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/OldSectionTable.java b/src/scratchpad/src/org/apache/poi/hwpf/model/OldSectionTable.java index 87218b35e5..18819c32c9 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/OldSectionTable.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/OldSectionTable.java @@ -60,8 +60,8 @@ public final class OldSectionTable extends SectionTable // section properties, and we're trying to decode them as if they // were the new ones, we sometimes "need" more data than we have. // As a workaround, have a few extra 0 bytes on the end! - byte[] buf = new byte[sepxSize+2]; - fileOffset += LittleEndian.SHORT_SIZE; + byte[] buf = new byte[sepxSize+4]; + fileOffset += 4; System.arraycopy(documentStream, fileOffset, buf, 0, buf.length); _sections.add(new SEPX(sed, startAt, endAt, charConv, buf)); } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java index 1ef21db3a5..690345322b 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java @@ -273,7 +273,17 @@ public final class TestWordExtractor extends TestCase { assertEquals("\r\n", tp[5]); assertEquals("Last (4th) paragraph.\r\n", tp[6]); } - + + public void testWord95err() throws Exception { + // Can work with the special one + Word6Extractor w6e = new Word6Extractor( + POIDataSamples.getDocumentInstance().openResourceAsStream("word95err.doc") + ); + String text = w6e.getText(); + + assertTrue(text.contains("subject")); + } + public void testWord6() throws Exception { // Too old for the default try { diff --git a/test-data/document/word95err.doc b/test-data/document/word95err.doc new file mode 100644 index 0000000000..7db961b630 Binary files /dev/null and b/test-data/document/word95err.doc differ