aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2022-11-04 08:33:38 +0000
committerPJ Fanning <fanningpj@apache.org>2022-11-04 08:33:38 +0000
commitc4a0266cb38c7f98f3efc74be805c4028b0518e8 (patch)
treeb6e14cb41601a5dd0633ef1425472ed109c8d2e5
parent46ae0a8c60ad155b07bb90eb95b5e9fc7e4e75dc (diff)
downloadpoi-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.java22
-rw-r--r--poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileRead.java19
-rw-r--r--test-data/hsmf/bug66335.msgbin0 -> 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
new file mode 100644
index 0000000000..38563886af
--- /dev/null
+++ b/test-data/hsmf/bug66335.msg
Binary files differ