aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2008-05-06 22:51:28 +0000
committerNick Burch <nick@apache.org>2008-05-06 22:51:28 +0000
commitbc00daac893269cafccdfa461b66e6560f1ba3d4 (patch)
tree65a724f25b964c6f82d7221f6953f146d5f72be2
parent9d0ca2d5734d9a3d87e7766409ff35988b996329 (diff)
downloadpoi-bc00daac893269cafccdfa461b66e6560f1ba3d4.tar.gz
poi-bc00daac893269cafccdfa461b66e6560f1ba3d4.zip
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
-rw-r--r--src/java/org/apache/poi/poifs/storage/BlockListImpl.java3
-rw-r--r--src/java/org/apache/poi/poifs/storage/RawDataBlock.java5
-rw-r--r--src/testcases/org/apache/poi/poifs/data/ShortLastBlock.qwpbin0 -> 1303681 bytes
-rw-r--r--src/testcases/org/apache/poi/poifs/data/ShortLastBlock.wpsbin0 -> 140787 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java37
5 files changed, 42 insertions, 3 deletions
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
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.qwp
Binary files 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
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/data/ShortLastBlock.wps
Binary files 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<files.length; i++) {
+ File f = new File(pdirname, files[i]);
+ assertTrue(f.exists());
+
+ // Open the file up
+ POIFSFileSystem fs = new POIFSFileSystem(
+ new FileInputStream(f)
+ );
+
+ // Write it into a temp output array
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ fs.writeFilesystem(baos);
+
+ // Check sizes
+ }
+ }
private static InputStream openSampleStream(String sampleFileName) {
return HSSFTestDataSamples.openSampleFileStream(sampleFileName);