From ad52c65f708add76f4e10fdb80e446258d82230f Mon Sep 17 00:00:00 2001 From: Tim Allison Date: Fri, 26 Oct 2018 19:06:18 +0000 Subject: [PATCH] bug 62859 -- fix two potential NPEs when initializing XWPFSDTContent git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1844920 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFSDTContent.java | 6 ++++++ .../testcases/org/apache/poi/sl/TestFonts.java | 2 +- .../apache/poi/xwpf/usermodel/TestXWPFSDT.java | 13 +++++++++++++ test-data/document/Bug62859.docx | Bin 0 -> 17326 bytes 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test-data/document/Bug62859.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java index 99ab66a7e..f39c5cf48 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java @@ -47,6 +47,9 @@ public class XWPFSDTContent implements ISDTContent { private List bodyElements = new ArrayList<>(); public XWPFSDTContent(CTSdtContentRun sdtRun, IBody part, IRunBody parent) { + if (sdtRun == null) { + return; + } for (CTR ctr : sdtRun.getRArray()) { XWPFRun run = new XWPFRun(ctr, parent); // runs.add(run); @@ -55,6 +58,9 @@ public class XWPFSDTContent implements ISDTContent { } public XWPFSDTContent(CTSdtContentBlock block, IBody part, IRunBody parent) { + if (block == null) { + return; + } XmlCursor cursor = block.newCursor(); cursor.selectPath("./*"); while (cursor.toNextSelection()) { diff --git a/src/ooxml/testcases/org/apache/poi/sl/TestFonts.java b/src/ooxml/testcases/org/apache/poi/sl/TestFonts.java index b7a6d16a5..f35065de7 100644 --- a/src/ooxml/testcases/org/apache/poi/sl/TestFonts.java +++ b/src/ooxml/testcases/org/apache/poi/sl/TestFonts.java @@ -74,7 +74,7 @@ public class TestFonts { // currently linux and mac return quite different values private static final int[] expected_sizes = { 304, // windows 10, 1080p, MS Office 2016, system text scaling 100% instead of default 125% - 306, // Windows 10, 15.6" 3840x2160 + 306, 308,// Windows 10, 15.6" 3840x2160 311, 312, 313, 318, 348, // Windows 10, 15.6" 3840x2160 362, // Windows 10, 13.3" 1080p high-dpi diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java index deac5c09a..9388e0871 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java @@ -148,6 +148,19 @@ public final class TestXWPFSDT { assertEquals("", sdts.get(0).getTitle()); } + @Test + public void test62859() throws IOException { + //this doesn't test the exact code path for this issue, but + //it does test for a related issue, and the fix fixes both. + //We should try to add the actual triggering document + //to our test suite. + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug62859.docx"); + List sdts = extractAllSDTs(doc); + assertEquals(1, sdts.size()); + assertEquals("", sdts.get(0).getTag()); + assertEquals("", sdts.get(0).getTitle()); + } + private List extractAllSDTs(XWPFDocument doc) { List sdts = new ArrayList<>(); diff --git a/test-data/document/Bug62859.docx b/test-data/document/Bug62859.docx new file mode 100644 index 0000000000000000000000000000000000000000..e0ede4a83db6a202989695236065e72c8884bf79 GIT binary patch literal 17326 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 literal 0 HcmV?d00001