Author: kiwiwings
Date: Wed Mar 9 00:41:02 2016
New Revision: 1734182
URL: http://svn.apache.org/viewvc?rev=1734182&view=rev
Log:
#57031 - Out of Memory when extracting text from attached files
Modified:
poi/site/src/documentation/content/xdocs/status.xml
poi/trunk/src/ooxml/java/org/apache/poi/POIXMLTypeLoader.java
poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/util/EvilUnclosedBRFixingInputStream.java
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
Modified: poi/site/src/documentation/content/xdocs/status.xml
URL:
http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Wed Mar 9 00:41:02 2016
@@ -39,8 +39,9 @@
<person id="YK" name="Yegor Kozlov" email="[email protected]" />
</devs>
- <!-- release version="3.14-beta1" date="2016-07-??">
- </release -->
+ <release version="3.14-beta1" date="2016-07-??">
+ <action dev="PD" type="add" fixes-bug="57031">Out of Memory when
extracting text from attached files</action>
+ </release>
<release version="3.14" date="2016-03-07">
<action dev="PD" type="add" fixes-bug="59056">Render individual
slideshow shapes</action>
Modified: poi/trunk/src/ooxml/java/org/apache/poi/POIXMLTypeLoader.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/POIXMLTypeLoader.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/POIXMLTypeLoader.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/POIXMLTypeLoader.java Wed Mar 9
00:41:02 2016
@@ -18,9 +18,11 @@
package org.apache.poi;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
+import java.io.StringReader;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
@@ -28,6 +30,7 @@ import java.util.Map;
import javax.xml.stream.XMLStreamReader;
+import org.apache.poi.util.DocumentHelper;
import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlBeans;
import org.apache.xmlbeans.XmlException;
@@ -35,7 +38,10 @@ import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import org.apache.xmlbeans.xml.stream.XMLInputStream;
import org.apache.xmlbeans.xml.stream.XMLStreamException;
+import org.w3c.dom.Document;
import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
@SuppressWarnings("deprecation")
public class POIXMLTypeLoader {
@@ -77,19 +83,38 @@ public class POIXMLTypeLoader {
}
public static XmlObject parse(String xmlText, SchemaType type, XmlOptions
options) throws XmlException {
- return XmlBeans.getContextTypeLoader().parse(xmlText, type,
getXmlOptions(options));
+ try {
+ return parse(new StringReader(xmlText), type, options);
+ } catch (IOException e) {
+ throw new XmlException("Unable to parse xml bean", e);
+ }
}
public static XmlObject parse(File file, SchemaType type, XmlOptions
options) throws XmlException, IOException {
- return XmlBeans.getContextTypeLoader().parse(file, type,
getXmlOptions(options));
+ InputStream is = new FileInputStream(file);
+ try {
+ return parse(is, type, options);
+ } finally {
+ is.close();
+ }
}
public static XmlObject parse(URL file, SchemaType type, XmlOptions
options) throws XmlException, IOException {
- return XmlBeans.getContextTypeLoader().parse(file, type,
getXmlOptions(options));
+ InputStream is = file.openStream();
+ try {
+ return parse(is, type, options);
+ } finally {
+ is.close();
+ }
}
public static XmlObject parse(InputStream jiois, SchemaType type,
XmlOptions options) throws XmlException, IOException {
- return XmlBeans.getContextTypeLoader().parse(jiois, type,
getXmlOptions(options));
+ try {
+ Document doc = DocumentHelper.readDocument(jiois);
+ return
XmlBeans.getContextTypeLoader().parse(doc.getDocumentElement(), type,
getXmlOptions(options));
+ } catch (SAXException e) {
+ throw new IOException("Unable to parse xml bean", e);
+ }
}
public static XmlObject parse(XMLStreamReader xsr, SchemaType type,
XmlOptions options) throws XmlException {
@@ -97,7 +122,12 @@ public class POIXMLTypeLoader {
}
public static XmlObject parse(Reader jior, SchemaType type, XmlOptions
options) throws XmlException, IOException {
- return XmlBeans.getContextTypeLoader().parse(jior, type,
getXmlOptions(options));
+ try {
+ Document doc = DocumentHelper.readDocument(new InputSource(jior));
+ return
XmlBeans.getContextTypeLoader().parse(doc.getDocumentElement(), type,
getXmlOptions(options));
+ } catch (SAXException e) {
+ throw new XmlException("Unable to parse xml bean", e);
+ }
}
public static XmlObject parse(Node node, SchemaType type, XmlOptions
options) throws XmlException {
Modified: poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java Wed Mar 9
00:41:02 2016
@@ -29,13 +29,53 @@ import javax.xml.stream.events.Namespace
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
public final class DocumentHelper {
private static POILogger logger =
POILogFactory.getLogger(DocumentHelper.class);
private DocumentHelper() {}
+ private static class DocHelperErrorHandler implements ErrorHandler {
+
+ public void warning(SAXParseException exception) throws SAXException {
+ printError(POILogger.WARN, exception);
+ }
+
+ public void error(SAXParseException exception) throws SAXException {
+ printError(POILogger.ERROR, exception);
+ }
+
+ public void fatalError(SAXParseException exception) throws
SAXException {
+ printError(POILogger.FATAL, exception);
+ throw exception;
+ }
+
+ /** Prints the error message. */
+ private void printError(int type, SAXParseException ex) {
+ StringBuilder sb = new StringBuilder();
+
+ String systemId = ex.getSystemId();
+ if (systemId != null) {
+ int index = systemId.lastIndexOf('/');
+ if (index != -1)
+ systemId = systemId.substring(index + 1);
+ sb.append(systemId);
+ }
+ sb.append(':');
+ sb.append(ex.getLineNumber());
+ sb.append(':');
+ sb.append(ex.getColumnNumber());
+ sb.append(": ");
+ sb.append(ex.getMessage());
+
+ logger.log(type, sb.toString(), ex);
+ }
+ }
+
/**
* Creates a new document builder, with sensible defaults
*/
@@ -43,6 +83,7 @@ public final class DocumentHelper {
try {
DocumentBuilder documentBuilder =
documentBuilderFactory.newDocumentBuilder();
documentBuilder.setEntityResolver(SAXHelper.IGNORING_ENTITY_RESOLVER);
+ documentBuilder.setErrorHandler(new DocHelperErrorHandler());
return documentBuilder;
} catch (ParserConfigurationException e) {
throw new IllegalStateException("cannot create a DocumentBuilder",
e);
@@ -57,9 +98,9 @@ public final class DocumentHelper {
trySetXercesSecurityManager(documentBuilderFactory);
}
- private static void trySetSAXFeature(DocumentBuilderFactory
documentBuilderFactory, String feature, boolean enabled) {
+ private static void trySetSAXFeature(DocumentBuilderFactory dbf, String
feature, boolean enabled) {
try {
- documentBuilderFactory.setFeature(feature, enabled);
+ dbf.setFeature(feature, enabled);
} catch (Exception e) {
logger.log(POILogger.WARN, "SAX Feature unsupported", feature, e);
} catch (AbstractMethodError ame) {
@@ -67,7 +108,7 @@ public final class DocumentHelper {
}
}
- private static void trySetXercesSecurityManager(DocumentBuilderFactory
documentBuilderFactory) {
+ private static void trySetXercesSecurityManager(DocumentBuilderFactory
dbf) {
// Try built-in JVM one first, standalone if not
for (String securityManagerClassName : new String[] {
"com.sun.org.apache.xerces.internal.util.SecurityManager",
@@ -77,7 +118,7 @@ public final class DocumentHelper {
Object mgr =
Class.forName(securityManagerClassName).newInstance();
Method setLimit =
mgr.getClass().getMethod("setEntityExpansionLimit", Integer.TYPE);
setLimit.invoke(mgr, 4096);
-
documentBuilderFactory.setAttribute("http://apache.org/xml/properties/security-manager",
mgr);
+
dbf.setAttribute("http://apache.org/xml/properties/security-manager", mgr);
// Stop once one can be setup without error
return;
} catch (Throwable t) {
@@ -96,6 +137,16 @@ public final class DocumentHelper {
return newDocumentBuilder().parse(inp);
}
+ /**
+ * Parses the given stream via the default (sensible)
+ * DocumentBuilder
+ * @param inp sax source to read the XML data from
+ * @return the parsed Document
+ */
+ public static Document readDocument(InputSource inp) throws IOException,
SAXException {
+ return newDocumentBuilder().parse(inp);
+ }
+
// must only be used to create empty documents, do not use it for parsing!
private static final DocumentBuilder documentBuilderSingleton =
newDocumentBuilder();
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java Wed
Mar 9 00:41:02 2016
@@ -30,6 +30,7 @@ import org.apache.poi.sl.usermodel.Notes
import org.apache.poi.sl.usermodel.Placeholder;
import org.apache.poi.sl.usermodel.Slide;
import org.apache.poi.util.Beta;
+import org.apache.poi.util.DocumentHelper;
import org.apache.xmlbeans.XmlException;
import org.openxmlformats.schemas.drawingml.x2006.main.CTBlip;
import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupShapeProperties;
@@ -43,6 +44,8 @@ import org.openxmlformats.schemas.presen
import
org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShapeNonVisual;
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide;
import org.openxmlformats.schemas.presentationml.x2006.main.SldDocument;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
@Beta
public final class XSLFSlide extends XSLFSheet
@@ -72,8 +75,14 @@ implements Slide<XSLFShape,XSLFTextParag
XSLFSlide(PackagePart part) throws IOException, XmlException {
super(part);
- SldDocument doc =
- SldDocument.Factory.parse(getPackagePart().getInputStream(),
DEFAULT_XML_OPTIONS);
+ Document _doc;
+ try {
+ _doc =
DocumentHelper.readDocument(getPackagePart().getInputStream());
+ } catch (SAXException e) {
+ throw new IOException(e);
+ }
+
+ SldDocument doc = SldDocument.Factory.parse(_doc, DEFAULT_XML_OPTIONS);
_slide = doc.getSld();
setCommonSlideData(_slide.getCSld());
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java Wed Mar 9
00:41:02 2016
@@ -21,17 +21,18 @@ import static org.apache.poi.POIXMLTypeL
import java.io.File;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.poi.openxml4j.opc.internal.ZipHelper;
+import org.apache.poi.util.DocumentHelper;
import org.apache.poi.util.IOUtils;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
+import org.w3c.dom.Document;
/**
* Utility class which dumps the contents of a *.xlsx file into file system.
@@ -93,7 +94,8 @@ public final class XSSFDump {
try {
if (entry.getName().endsWith(".xml") ||
entry.getName().endsWith(".vml") || entry.getName().endsWith(".rels")) {
try {
- XmlObject xml =
XmlObject.Factory.parse(zip.getInputStream(entry), DEFAULT_XML_OPTIONS);
+ Document doc =
DocumentHelper.readDocument(zip.getInputStream(entry));
+ XmlObject xml = XmlObject.Factory.parse(doc,
DEFAULT_XML_OPTIONS);
XmlOptions options = new XmlOptions();
options.setSavePrettyPrint();
xml.save(out, options);
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
Wed Mar 9 00:41:02 2016
@@ -134,7 +134,7 @@ public class SharedStringsTable extends
cnt++;
}
} catch (XmlException e) {
- throw new IOException(e);
+ throw new IOException("unable to parse shared strings table", e);
}
}
@@ -216,18 +216,18 @@ public class SharedStringsTable extends
* @throws IOException if an error occurs while writing.
*/
public void writeTo(OutputStream out) throws IOException {
- XmlOptions options = new XmlOptions(DEFAULT_XML_OPTIONS);
+ XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
// the following two lines turn off writing CDATA
// see Bugzilla 48936
- options.setSaveCDataLengthThreshold(1000000);
- options.setSaveCDataEntityCountThreshold(-1);
+ xmlOptions.setSaveCDataLengthThreshold(1000000);
+ xmlOptions.setSaveCDataEntityCountThreshold(-1);
//re-create the sst table every time saving a workbook
CTSst sst = _sstDoc.getSst();
sst.setCount(count);
sst.setUniqueCount(uniqueCount);
- _sstDoc.save(out, options);
+ _sstDoc.save(out, xmlOptions);
}
@Override
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
Wed Mar 9 00:41:02 2016
@@ -22,6 +22,7 @@ import static org.apache.poi.POIXMLTypeL
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.StringReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
@@ -33,11 +34,15 @@ import javax.xml.namespace.QName;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.util.DocumentHelper;
import org.apache.poi.xssf.util.EvilUnclosedBRFixingInputStream;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
+import org.w3c.dom.Document;
import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
import com.microsoft.schemas.office.excel.CTClientData;
import com.microsoft.schemas.office.excel.STObjectType;
@@ -124,10 +129,15 @@ public final class XSSFVMLDrawing extend
this(part);
}
+ @SuppressWarnings("resource")
protected void read(InputStream is) throws IOException, XmlException {
- XmlObject root = XmlObject.Factory.parse(
- new EvilUnclosedBRFixingInputStream(is), DEFAULT_XML_OPTIONS
- );
+ Document doc;
+ try {
+ doc = DocumentHelper.readDocument(new
EvilUnclosedBRFixingInputStream(is));
+ } catch (SAXException e) {
+ throw new XmlException(e.getMessage(), e);
+ }
+ XmlObject root = XmlObject.Factory.parse(doc, DEFAULT_XML_OPTIONS);
_qnames = new ArrayList<QName>();
_items = new ArrayList<XmlObject>();
@@ -149,7 +159,15 @@ public final class XSSFVMLDrawing extend
}
_items.add(shape);
} else {
- _items.add(XmlObject.Factory.parse(obj.xmlText(),
DEFAULT_XML_OPTIONS));
+ Document doc2;
+ try {
+ InputSource is2 = new InputSource(new
StringReader(obj.xmlText()));
+ doc2 = DocumentHelper.readDocument(is2);
+ } catch (SAXException e) {
+ throw new XmlException(e.getMessage(), e);
+ }
+
+ _items.add(XmlObject.Factory.parse(doc2, DEFAULT_XML_OPTIONS));
}
_qnames.add(qname);
}
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/util/EvilUnclosedBRFixingInputStream.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/util/EvilUnclosedBRFixingInputStream.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xssf/util/EvilUnclosedBRFixingInputStream.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xssf/util/EvilUnclosedBRFixingInputStream.java
Wed Mar 9 00:41:02 2016
@@ -63,6 +63,9 @@ public class EvilUnclosedBRFixingInputSt
// Figure out how much we've done
int read;
if(readB == -1 || readB == 0) {
+ if (readA == 0) {
+ return readB;
+ }
read = readA;
} else {
read = readA + readB;
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java Wed Mar
9 00:41:02 2016
@@ -20,6 +20,7 @@ import static org.apache.poi.POIXMLTypeL
import java.io.IOException;
import java.io.InputStream;
+import java.io.StringReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
@@ -29,6 +30,7 @@ import javax.xml.namespace.QName;
import org.apache.poi.POIXMLException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.util.DocumentHelper;
import org.apache.poi.util.Internal;
import org.apache.poi.wp.usermodel.CharacterRun;
import org.apache.xmlbeans.XmlCursor;
@@ -80,6 +82,8 @@ import org.openxmlformats.schemas.wordpr
import
org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalAlignRun;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
/**
* XWPFRun object defines a region of text with a common set of properties
@@ -171,7 +175,7 @@ public class XWPFRun implements ISDTCont
}
private List<CTPicture> getCTPictures(XmlObject o) {
- List<CTPicture> pictures = new ArrayList<CTPicture>();
+ List<CTPicture> pics = new ArrayList<CTPicture>();
XmlObject[] picts = o.selectPath("declare namespace pic='" +
CTPicture.type.getName().getNamespaceURI() + "' .//pic:pic");
for (XmlObject pict : picts) {
if (pict instanceof XmlAnyTypeImpl) {
@@ -183,10 +187,10 @@ public class XWPFRun implements ISDTCont
}
}
if (pict instanceof CTPicture) {
- pictures.add((CTPicture) pict);
+ pics.add((CTPicture) pict);
}
}
- return pictures;
+ return pics;
}
/**
@@ -940,6 +944,7 @@ public class XWPFRun implements ISDTCont
relationId = headerFooter.addPictureData(pictureData, pictureType);
picData = (XWPFPictureData)
headerFooter.getRelationById(relationId);
} else {
+ @SuppressWarnings("resource")
XWPFDocument doc = parent.getDocument();
relationId = doc.addPictureData(pictureData, pictureType);
picData = (XWPFPictureData) doc.getRelationById(relationId);
@@ -957,8 +962,10 @@ public class XWPFRun implements ISDTCont
"<a:graphicData uri=\"" +
CTPicture.type.getName().getNamespaceURI() + "\">" +
"<pic:pic xmlns:pic=\"" +
CTPicture.type.getName().getNamespaceURI() + "\" />" +
"</a:graphicData>" +
- "</a:graphic>";
- inline.set(XmlToken.Factory.parse(xml, DEFAULT_XML_OPTIONS));
+ "</a:graphic>";
+ InputSource is = new InputSource(new StringReader(xml));
+ org.w3c.dom.Document doc = DocumentHelper.readDocument(is);
+ inline.set(XmlToken.Factory.parse(doc.getDocumentElement(),
DEFAULT_XML_OPTIONS));
// Setup the inline
inline.setDistT(0);
@@ -1021,6 +1028,8 @@ public class XWPFRun implements ISDTCont
return xwpfPicture;
} catch (XmlException e) {
throw new IllegalStateException(e);
+ } catch (SAXException e) {
+ throw new IllegalStateException(e);
}
}
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
(original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
Wed Mar 9 00:41:02 2016
@@ -781,7 +781,8 @@ public final class TestPackage {
}
}
- if(e.getMessage().startsWith("Zip bomb detected!")) {
+ String msg = e.getMessage();
+ if(msg != null && msg.startsWith("Zip bomb detected!")) {
return;
}
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java?rev=1734182&r1=1734181&r2=1734182&view=diff
==============================================================================
---
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
(original)
+++
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
Wed Mar 9 00:41:02 2016
@@ -67,6 +67,8 @@ public class TestZipPackage {
assertTrue("Core not found in " + p.getParts(), foundCoreProps);
assertFalse("Document should not be found in " + p.getParts(),
foundDocument);
assertFalse("Theme1 should not found in " + p.getParts(), foundTheme1);
+ p.close();
+ is.close();
}
@Test
@@ -89,7 +91,7 @@ public class TestZipPackage {
writer.close();
}
String string = new String(str.toByteArray(), "UTF-8");
- assertTrue("Had: " + string, string.contains("Exceeded Entity
dereference bytes limit"));
+ assertTrue("Had: " + string, string.contains("The parser has
encountered more than"));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]