This is an automated email from the ASF dual-hosted git repository.
fanningpj pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git
The following commit(s) were added to refs/heads/trunk by this push:
new 559485a0fe throw OfficeXmlFileException if hwpf reads an ooxml file
559485a0fe is described below
commit 559485a0fe2735c1ecab7d343a45f5d0bd1877e1
Author: PJ Fanning <[email protected]>
AuthorDate: Fri Sep 5 11:04:29 2025 +0100
throw OfficeXmlFileException if hwpf reads an ooxml file
---
.../java/org/apache/poi/hwpf/HWPFDocumentCore.java | 4 ++
.../org/apache/poi/hwpf/HWPFTestDataSamples.java | 4 ++
.../java/org/apache/poi/hwpf/TestHWPFParser.java | 49 ++++++++++++++++++++++
3 files changed, 57 insertions(+)
diff --git
a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/HWPFDocumentCore.java
b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/HWPFDocumentCore.java
index bf73030fe2..be8328280e 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/HWPFDocumentCore.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/HWPFDocumentCore.java
@@ -49,6 +49,7 @@ import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
import org.apache.poi.poifs.filesystem.Entry;
import org.apache.poi.poifs.filesystem.FileMagic;
+import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.Internal;
@@ -138,6 +139,9 @@ public abstract class HWPFDocumentCore extends POIDocument {
FileMagic fm = FileMagic.valueOf(is);
if (fm != FileMagic.OLE2) {
+ if (fm == FileMagic.OOXML) {
+ throw new OfficeXmlFileException("The document is really a
OOXML file");
+ }
throw new IllegalArgumentException("The document is really a
"+fm+" file");
}
diff --git
a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java
b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java
index 082b4866d4..3438862bf1 100644
--- a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java
+++ b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/HWPFTestDataSamples.java
@@ -34,6 +34,10 @@ public class HWPFTestDataSamples {
}
}
+ public static InputStream openSampleFileStream(String sampleFileName) {
+ return SAMPLES.openResourceAsStream(sampleFileName);
+ }
+
public static HWPFOldDocument openOldSampleFile(String sampleFileName) {
try {
InputStream is =
POIDataSamples.getDocumentInstance().openResourceAsStream(sampleFileName);
diff --git
a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/TestHWPFParser.java
b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/TestHWPFParser.java
new file mode 100644
index 0000000000..093b860f5d
--- /dev/null
+++ b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/TestHWPFParser.java
@@ -0,0 +1,49 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.hwpf;
+
+import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
+import org.junit.jupiter.api.Test;
+
+import java.io.InputStream;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+public class TestHWPFParser {
+ @Test
+ void testDoc() throws Exception {
+ try (
+ InputStream stream =
HWPFTestDataSamples.openSampleFileStream("Lists.doc");
+ HWPFDocument doc = HWPFParser.parse(stream)
+ ) {
+ assertNotNull(doc);
+ assertEquals(40, doc.getParagraphTable().getParagraphs().size());
+ }
+ }
+
+ @Test
+ void testFailOnDocx() throws Exception {
+ try (InputStream stream =
HWPFTestDataSamples.openSampleFileStream("sample.docx")) {
+ HWPFReadException hre = assertThrows(HWPFReadException.class, ()
-> HWPFParser.parse(stream));
+ assertInstanceOf(OfficeXmlFileException.class, hre.getCause());
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]