diff options
author | PJ Fanning <fanningpj@apache.org> | 2022-11-04 08:33:38 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2022-11-04 08:33:38 +0000 |
commit | c4a0266cb38c7f98f3efc74be805c4028b0518e8 (patch) | |
tree | b6e14cb41601a5dd0633ef1425472ed109c8d2e5 | |
parent | 46ae0a8c60ad155b07bb90eb95b5e9fc7e4e75dc (diff) | |
download | poi-c4a0266cb38c7f98f3efc74be805c4028b0518e8.tar.gz poi-c4a0266cb38c7f98f3efc74be805c4028b0518e8.zip |
[bug-66335] add test case for issue and add some of the code from purported fix
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1905061 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Types.java | 22 | ||||
-rw-r--r-- | poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileRead.java | 19 | ||||
-rw-r--r-- | test-data/hsmf/bug66335.msg | bin | 0 -> 134656 bytes |
3 files changed, 41 insertions, 0 deletions
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Types.java b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Types.java index d11f3489da..9bfc6eed3d 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Types.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/Types.java @@ -81,6 +81,20 @@ public final class Types { /** A string, from Outlook 3.0 onwards. Normally unicode */ public static final MAPIType UNICODE_STRING = new MAPIType(0x001F, "Unicode String", -1); + /** MultiValued Properties */ + public static final MAPIType MV_SHORT = new MAPIType(0x1002, "MV Short", -1); + public static final MAPIType MV_LONG = new MAPIType(0x1003, "MV Long", -1); + public static final MAPIType MV_FLOAT = new MAPIType(0x1004, "MV Float", -1); + public static final MAPIType MV_DOUBLE = new MAPIType(0x1005, "MV Double", -1); + public static final MAPIType MV_CURRENCY = new MAPIType(0x1006, "MV Currency", -1); + public static final MAPIType MV_APP_TIME = new MAPIType(0x1007, "MV Application Time", -1); + public static final MAPIType MV_LONG_LONG = new MAPIType(0x1014, "MV Long Long", -1); + public static final MAPIType MV_TIME = new MAPIType(0x1040, "MV Time", -1); + public static final MAPIType MV_CLS_ID = new MAPIType(0x1048, "MV CLS ID GUID", -1); + public static final MAPIType MV_BINARY = new MAPIType(0x1102, "MV Binary", -1); + public static final MAPIType MV_ASCII_STRING = new MAPIType(0x101E, "MV ASCII String", -1); + public static final MAPIType MV_UNICODE_STRING = new MAPIType(0x101F, "MV Unicode String", -1); + /** MultiValued - Value part contains multiple values */ public static final int MULTIVALUED_FLAG = 0x1000; @@ -124,6 +138,14 @@ public final class Types { return ((length != -1) && (length <= 8)) || (id == Types.CLS_ID.id); } + /** + * @return whether the type is a pointer + * @since POI 5.2.4 + */ + public boolean isPointer() { + return (length == -1) || (length > 8); + } + public int getId() { return id; } diff --git a/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileRead.java b/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileRead.java new file mode 100644 index 0000000000..21f95be629 --- /dev/null +++ b/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileRead.java @@ -0,0 +1,19 @@ +package org.apache.poi.hsmf; + +import org.apache.poi.POIDataSamples; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TestFileRead { + @Test + void bug66335() throws IOException { + try (MAPIMessage mapiMessage = new MAPIMessage( + POIDataSamples.getHSMFInstance().getFile("bug66335.msg"))) { + // 25 is not the right number of properties but it is what the existing code finds + assertEquals(25, mapiMessage.getMainChunks().getProperties().size()); + } + } +} diff --git a/test-data/hsmf/bug66335.msg b/test-data/hsmf/bug66335.msg Binary files differnew file mode 100644 index 0000000000..38563886af --- /dev/null +++ b/test-data/hsmf/bug66335.msg |