mirror of https://github.com/apache/poi.git
Bug 66425: Avoid exceptions found via poi-fuzz
Prevent NullPointerException Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64495 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1915005 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
94ace1c4b0
commit
d54c8f16e6
|
@ -97,8 +97,10 @@ public class XWPFNumbering extends POIXMLDocumentPart {
|
|||
XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
|
||||
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "numbering"));
|
||||
PackagePart part = getPackagePart();
|
||||
try (OutputStream out = part.getOutputStream()) {
|
||||
ctNumbering.save(out, xmlOptions);
|
||||
if (ctNumbering != null) {
|
||||
try (OutputStream out = part.getOutputStream()) {
|
||||
ctNumbering.save(out, xmlOptions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,12 +18,16 @@
|
|||
package org.apache.poi.xwpf.usermodel;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.math.BigInteger;
|
||||
|
||||
import org.apache.commons.io.output.NullOutputStream;
|
||||
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum;
|
||||
|
@ -165,4 +169,18 @@ class TestXWPFNumbering {
|
|||
assertEquals(doc.getNumbering().getAbstractNums().size(), count);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNPE() throws IOException {
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("clusterfuzz-testcase-minimized-POIXWPFFuzzer-6120975439364096.docx");
|
||||
OutputStream out = NullOutputStream.INSTANCE) {
|
||||
|
||||
// settings and numbering are null for this malformed document
|
||||
assertNull(doc.getNumbering());
|
||||
assertNull(doc.getSettings());
|
||||
|
||||
assertThrows(IllegalStateException.class, () ->
|
||||
doc.write(out), "Fails because settings are not populated in this malformed document");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue