diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/PropertiesChunk.java b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/PropertiesChunk.java index 809411bfb2..cdc146d980 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/PropertiesChunk.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/PropertiesChunk.java @@ -255,7 +255,7 @@ public abstract class PropertiesChunk extends Chunk { // to another chunk which holds the data itself boolean isPointer = false; int length = type.getLength(); - if (!type.isFixedLength()) { + if (type.isPointer()) { isPointer = true; length = 8; } @@ -380,7 +380,7 @@ public abstract class PropertiesChunk extends Chunk { LittleEndian.putUInt(value.getFlags(), out); // readable + writable MAPIType type = getTypeMapping(value.getActualType()); - if (type.isFixedLength()) { + if (type.isFixedLength() && !type.isPointer()) { // page 11, point 2.1.2 writeFixedLengthValueHeader(out, property, type, value); } else { 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 index 21f95be629..71c6807431 100644 --- a/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileRead.java +++ b/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestFileRead.java @@ -12,8 +12,7 @@ public class TestFileRead { 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()); + assertEquals(151, mapiMessage.getMainChunks().getProperties().size()); } } }