diff options
author | Dominik Stadler <centic@apache.org> | 2018-04-02 17:15:42 +0000 |
---|---|---|
committer | Dominik Stadler <centic@apache.org> | 2018-04-02 17:15:42 +0000 |
commit | 7d8da8ea593d5d44634dd23e498bcc646a3f5a62 (patch) | |
tree | 0c16fa382667f933130bc1aae300f4e943cc2360 /src | |
parent | 56717351c1a6820656e05704231e09f5efadcb08 (diff) | |
download | poi-7d8da8ea593d5d44634dd23e498bcc646a3f5a62.tar.gz poi-7d8da8ea593d5d44634dd23e498bcc646a3f5a62.zip |
Bug 61267: detect Word v2 files and report that they are not supported in Apache POI
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1828176 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
5 files changed, 25 insertions, 5 deletions
diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index 77651274e4..333a8ebcdc 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -302,6 +302,8 @@ public class TestAllFiles { "spreadsheet/poc-xmlbomb.xlsx", // contains xml-entity-expansion "spreadsheet/poc-xmlbomb-empty.xlsx", // contains xml-entity-expansion "spreadsheet/poc-shared-strings.xlsx", // contains shared-string-entity-expansion + "document/61612a.docx", + "document/word2.doc", // old Excel files, which we only support simple text extraction of "spreadsheet/testEXCEL_2.xls", diff --git a/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java index a5baa4adbc..680cac8398 100644 --- a/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java @@ -54,7 +54,8 @@ public class HPSFFileHandler extends POIFSFileHandler { "spreadsheet/55982.xls", "spreadsheet/testEXCEL_3.xls", "spreadsheet/testEXCEL_4.xls", - "hpsf/Test_Humor-Generation.ppt" + "hpsf/Test_Humor-Generation.ppt", + "document/word2.doc" ); static final Set<String> EXCLUDES_HANDLE_FILE = unmodifiableHashSet( diff --git a/src/java/org/apache/poi/poifs/filesystem/FileMagic.java b/src/java/org/apache/poi/poifs/filesystem/FileMagic.java index 6bde1ced8e..765cf6e323 100644 --- a/src/java/org/apache/poi/poifs/filesystem/FileMagic.java +++ b/src/java/org/apache/poi/poifs/filesystem/FileMagic.java @@ -77,10 +77,11 @@ public enum FileMagic { PDF("%PDF"), /** Some different HTML documents */ HTML("<!DOCTYP".getBytes(UTF_8), "<html".getBytes(UTF_8)), + WORD2(new byte[]{ (byte)0xdb, (byte)0xa5, 0x2d, 0x00}), // keep UNKNOWN always as last enum! /** UNKNOWN magic */ UNKNOWN(new byte[0]); - + final byte[][] magic; FileMagic(long magic) { diff --git a/src/java/org/apache/poi/poifs/storage/HeaderBlock.java b/src/java/org/apache/poi/poifs/storage/HeaderBlock.java index c833138a24..778590a899 100644 --- a/src/java/org/apache/poi/poifs/storage/HeaderBlock.java +++ b/src/java/org/apache/poi/poifs/storage/HeaderBlock.java @@ -136,6 +136,9 @@ public final class HeaderBlock implements HeaderBlockConstants { case MSWRITE: throw new NotOLE2FileException("The supplied data appears to be in the old MS Write format. " + "Apache POI doesn't currently support this format"); + case WORD2: + throw new NotOLE2FileException("The supplied data appears to be an old Word version 2 file. " + + "Apache POI doesn't currently support this format"); case BIFF2: case BIFF3: case BIFF4: diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFOldDocument.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFOldDocument.java index 50ddda3297..d5702d9a9c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFOldDocument.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFOldDocument.java @@ -44,7 +44,7 @@ public final class TestHWPFOldDocument extends HWPFTestCase { // Can't open as HWPFDocument HWPFTestDataSamples.openSampleFile("Word6.doc"); } - + @Test public void testWord6hwpfOld() throws IOException { // Open @@ -60,8 +60,21 @@ public final class TestHWPFOldDocument extends HWPFTestCase { doc.close(); } - - + /** + * Test a simple Word 2 document + */ + @Test(expected=IllegalArgumentException.class) + public void testWord2hwpf() throws IOException { + // Can't open as HWPFDocument + HWPFTestDataSamples.openSampleFile("word2.doc"); + } + + @Test(expected=RuntimeException.class) + public void testWord2hwpfOld() throws IOException { + // Open + HWPFTestDataSamples.openOldSampleFile("word2.doc"); + } + /** * Test a simple Word 95 document */ |