aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTim Allison <tallison@apache.org>2017-01-13 20:55:04 +0000
committerTim Allison <tallison@apache.org>2017-01-13 20:55:04 +0000
commit4ce3e5def53c893012d6ba709e9beff95a149d48 (patch)
tree75e2edd5905762940103aea8dae0bebe9d074052 /src
parentbdc2e2fe04bcf322d790c1c633fcc4c392b07458 (diff)
downloadpoi-4ce3e5def53c893012d6ba709e9beff95a149d48.tar.gz
poi-4ce3e5def53c893012d6ba709e9beff95a149d48.zip
bug 60584 -- avoid NPE by checking for null/missing image in XSSFReader's getShapes().
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1778664 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java b/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
index 9dfbf2bfc8..e5c9cb25b1 100644
--- a/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
+++ b/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
@@ -37,6 +37,8 @@ import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
import org.apache.poi.xssf.model.CommentsTable;
import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.model.StylesTable;
@@ -57,6 +59,9 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument;
* for XSSF.
*/
public class XSSFReader {
+
+ private static final POILogger LOGGER = POILogFactory.getLogger(XSSFReader.class);
+
private OPCPackage pkg;
private PackagePart workbookPart;
@@ -318,6 +323,11 @@ public class XSSFReader {
PackageRelationship drawings = drawingsList.getRelationship(i);
PackagePartName drawingsName = PackagingURIHelper.createPartName(drawings.getTargetURI());
PackagePart drawingsPart = sheetPkg.getPackage().getPart(drawingsName);
+ if (drawingsPart == null) {
+ //parts can go missing; Excel ignores them silently -- TIKA-2134
+ LOGGER.log(POILogger.WARN, "Missing drawing: "+drawingsName +". Skipping it.");
+ continue;
+ }
XSSFDrawing drawing = new XSSFDrawing(drawingsPart);
for (XSSFShape shape : drawing.getShapes()){
shapes.add(shape);