From 2633894b39b73f15c71cdd3da111ce6ebcd87f16 Mon Sep 17 00:00:00 2001 From: Tim Allison Date: Mon, 31 Oct 2016 19:02:06 +0000 Subject: [PATCH] 60293 -- Handle illegal "Odd" header/footer in XWPF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1767353 13f79535-47bb-0310-9956-ffa450edef68 --- .../xwpf/model/XWPFHeaderFooterPolicy.java | 20 ++++++++++++++---- .../poi/xwpf/usermodel/TestXWPFHeader.java | 7 ++++++ test-data/document/60293.docx | Bin 0 -> 15634 bytes 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 test-data/document/60293.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java index 8ff59713a..682b1cfd4 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java +++ b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java @@ -29,6 +29,7 @@ import org.apache.poi.xwpf.usermodel.XWPFHeader; import org.apache.poi.xwpf.usermodel.XWPFHeaderFooter; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRelation; +import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHdrFtr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHdrFtrRef; @@ -115,8 +116,14 @@ public class XWPFHeaderFooterPolicy { if (relatedPart != null && relatedPart instanceof XWPFHeader) { hdr = (XWPFHeader) relatedPart; } - // Assign it - Enum type = ref.getType(); + // Assign it; treat invalid options as "default" POI-60293 + Enum type; + try { + type = ref.getType(); + } catch (XmlValueOutOfRangeException e) { + type = STHdrFtr.DEFAULT; + } + assignHeader(hdr, type); } for (int i = 0; i < sectPr.sizeOfFooterReferenceArray(); i++) { @@ -127,8 +134,13 @@ public class XWPFHeaderFooterPolicy { if (relatedPart != null && relatedPart instanceof XWPFFooter) { ftr = (XWPFFooter) relatedPart; } - // Assign it - Enum type = ref.getType(); + // Assign it; treat invalid options as "default" POI-60293 + Enum type; + try { + type = ref.getType(); + } catch (XmlValueOutOfRangeException e) { + type = STHdrFtr.DEFAULT; + } assignFooter(ftr, type); } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java index 371c9da06..fbb24f506 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java @@ -220,4 +220,11 @@ public final class TestXWPFHeader { public void testGetPictureDataById() { // TODO } + + @Test + public void bug60293() throws Exception { + //test handling of non-standard header/footer options + XWPFDocument xwpf = XWPFTestDataSamples.openSampleDocument("60293.docx"); + assertEquals(3, xwpf.getHeaderList().size()); + } } diff --git a/test-data/document/60293.docx b/test-data/document/60293.docx new file mode 100644 index 0000000000000000000000000000000000000000..02dcabc9c4a3a0409b7a33f534a9f075e7c34d56 GIT binary patch literal 15634 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 Lp3^+bkJ|qLXYNIc literal 0 HcmV?d00001