From: Nick Burch Date: Tue, 6 May 2008 22:51:28 +0000 (+0000) Subject: Add disabled test for bug #44898, and slightly improve a few poifs related error... X-Git-Tag: REL_3_2_FINAL~355 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=bc00daac893269cafccdfa461b66e6560f1ba3d4;p=poi.git Add disabled test for bug #44898, and slightly improve a few poifs related error messages git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@653945 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/poifs/storage/BlockListImpl.java b/src/java/org/apache/poi/poifs/storage/BlockListImpl.java index 07f690c6b8..7e44fda3f3 100644 --- a/src/java/org/apache/poi/poifs/storage/BlockListImpl.java +++ b/src/java/org/apache/poi/poifs/storage/BlockListImpl.java @@ -102,7 +102,8 @@ class BlockListImpl catch (ArrayIndexOutOfBoundsException ignored) { throw new IOException("Cannot remove block[ " + index - + " ]; out of range"); + + " ]; out of range[ 0 - " + + (_blocks.length-1) + " ]"); } return result; } diff --git a/src/java/org/apache/poi/poifs/storage/RawDataBlock.java b/src/java/org/apache/poi/poifs/storage/RawDataBlock.java index 472fd8b8b5..b4630a78b4 100644 --- a/src/java/org/apache/poi/poifs/storage/RawDataBlock.java +++ b/src/java/org/apache/poi/poifs/storage/RawDataBlock.java @@ -81,8 +81,9 @@ public class RawDataBlock log.log(POILogger.ERROR, "Unable to read entire block; " + count + type + " read before EOF; expected " - + blockSize + " bytes. Your document" - + " has probably been truncated!" + + blockSize + " bytes. Your document " + + "was either written by software that " + + "ignores the spec, or has been truncated!" ); } else { diff --git a/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.qwp b/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.qwp new file mode 100644 index 0000000000..b278d06c20 Binary files /dev/null and b/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.qwp differ diff --git a/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.wps b/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.wps new file mode 100644 index 0000000000..1b1a627a99 Binary files /dev/null and b/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.wps differ diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java index d792dcf227..1cde86918b 100755 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java @@ -17,6 +17,9 @@ package org.apache.poi.poifs.filesystem; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; @@ -115,6 +118,40 @@ public final class TestPOIFSFileSystem extends TestCase { assertTrue("input stream was not closed", testIS.isClosed()); // but still should close } + + /** + * Test for bug # 48898 - problem opening an OLE2 + * file where the last block is short (i.e. not a full + * multiple of 512 bytes) + * + * As yet, this problem remains. One school of thought is + * not not issue an EOF when we discover the last block + * is short, but this seems a bit wrong. + * The other is to fix the handling of the last block in + * POIFS, since it seems to be slight wrong + */ + public void DISABLEDtestShortLastBlock() throws Exception { + String[] files = new String[] { + "ShortLastBlock.qwp", "ShortLastBlock.wps" + }; + String pdirname = System.getProperty("POIFS.testdata.path"); + + for(int i=0; i