From a9b2a8b2bd6e93ba85984be9a2aa8f9ac991c968 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 2 Mar 2019 12:28:19 +0000 Subject: [PATCH] Bug 63200: Avoid NullPointerException in XSLFShape.selectPaint() and check some more in integration tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1854639 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/stress/SlideShowHandler.java | 80 ++++++++++++------ .../org/apache/poi/sl/draw/DrawPaint.java | 5 +- .../usermodel/XDDFGradientFillProperties.java | 2 +- .../apache/poi/xslf/usermodel/XSLFShape.java | 3 +- .../org/apache/poi/xslf/TestXSLFBugs.java | 17 ++++ test-data/slideshow/63200.pptx | Bin 0 -> 36778 bytes 6 files changed, 80 insertions(+), 27 deletions(-) create mode 100644 test-data/slideshow/63200.pptx diff --git a/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java b/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java index 374afa40af..9c0e7316d0 100644 --- a/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java +++ b/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java @@ -16,8 +16,18 @@ ==================================================================== */ package org.apache.poi.stress; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import org.apache.poi.sl.draw.Drawable; +import org.apache.poi.sl.usermodel.GroupShape; +import org.apache.poi.sl.usermodel.Notes; +import org.apache.poi.sl.usermodel.PictureData; +import org.apache.poi.sl.usermodel.Shape; +import org.apache.poi.sl.usermodel.SimpleShape; +import org.apache.poi.sl.usermodel.Slide; +import org.apache.poi.sl.usermodel.SlideShow; +import org.apache.poi.sl.usermodel.SlideShowFactory; +import org.apache.poi.sl.usermodel.TextParagraph; +import org.apache.poi.sl.usermodel.TextRun; +import org.apache.poi.sl.usermodel.TextShape; import java.awt.Dimension; import java.awt.Graphics2D; @@ -28,16 +38,8 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.lang.ref.WeakReference; -import org.apache.poi.sl.draw.Drawable; -import org.apache.poi.sl.usermodel.PictureData; -import org.apache.poi.sl.usermodel.Shape; -import org.apache.poi.sl.usermodel.ShapeContainer; -import org.apache.poi.sl.usermodel.Slide; -import org.apache.poi.sl.usermodel.SlideShow; -import org.apache.poi.sl.usermodel.SlideShowFactory; -import org.apache.poi.sl.usermodel.TextParagraph; -import org.apache.poi.sl.usermodel.TextRun; -import org.apache.poi.sl.usermodel.TextShape; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public abstract class SlideShowHandler extends POIFSFileHandler { public void handleSlideShow(SlideShow ss) throws IOException { @@ -73,20 +75,50 @@ public abstract class SlideShowHandler extends POIFSFileHandler { private void readContent(SlideShow ss) { for (Slide s : ss.getSlides()) { s.getTitle(); - readText(s); - readText(s.getNotes()); - readText(s.getMasterSheet()); + + for (Shape shape : s) { + readShapes(shape); + } + + Notes notes = s.getNotes(); + if(notes != null) { + for (Shape shape : notes) { + readShapes(shape); + } + } + + for (Shape shape : s.getMasterSheet()) { + readShapes(shape); + } } } - - private void readText(ShapeContainer sc) { - if (sc == null) return; - for (Shape s : sc) { - if (s instanceof TextShape) { - for (TextParagraph tp : (TextShape)s) { - for (TextRun tr : tp) { - tr.getRawText(); - } + + private void readShapes(Shape s) { + // recursively walk group-shapes + if(s instanceof GroupShape) { + GroupShape shapes = (GroupShape) s; + for (Shape shape : shapes) { + readShapes(shape); + } + } + + if(s instanceof SimpleShape) { + SimpleShape simpleShape = (SimpleShape) s; + + simpleShape.getFillColor(); + simpleShape.getFillStyle(); + simpleShape.getStrokeStyle(); + simpleShape.getLineDecoration(); + } + + readText(s); + } + + private void readText(Shape s) { + if (s instanceof TextShape) { + for (TextParagraph tp : (TextShape)s) { + for (TextRun tr : tp) { + tr.getRawText(); } } } diff --git a/src/java/org/apache/poi/sl/draw/DrawPaint.java b/src/java/org/apache/poi/sl/draw/DrawPaint.java index 4fda618d0e..f012161b3c 100644 --- a/src/java/org/apache/poi/sl/draw/DrawPaint.java +++ b/src/java/org/apache/poi/sl/draw/DrawPaint.java @@ -407,7 +407,10 @@ public class DrawPaint { // snapToAnchor(p2, anchor); // gradient paint on the same point throws an exception ... and doesn't make sense - return (p1.equals(p2)) ? null : safeFractions((f,c)->new LinearGradientPaint(p1,p2,f,c), fill); + // also having less than two fractions will not work + return (p1.equals(p2) || fill.getGradientFractions().length < 2) ? + null : + safeFractions((f,c)->new LinearGradientPaint(p1,p2,f,c), fill); } diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientFillProperties.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientFillProperties.java index c46a58bb29..ab05448eec 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientFillProperties.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientFillProperties.java @@ -112,7 +112,7 @@ public class XDDFGradientFillProperties implements XDDFFillProperties { .getGsLst() .getGsList() .stream() - .map(gs -> new XDDFGradientStop(gs)) + .map(XDDFGradientStop::new) .collect(Collectors.toList())); } else { return Collections.emptyList(); diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java index a11b62abb3..3df55edbaa 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java @@ -431,7 +431,8 @@ public abstract class XSLFShape implements Shape { protected static PaintStyle selectPaint(final CTGradientFillProperties gradFill, CTSchemeColor phClr, final XSLFTheme theme) { @SuppressWarnings("deprecation") - final CTGradientStop[] gs = gradFill.getGsLst().getGsArray(); + final CTGradientStop[] gs = gradFill.getGsLst() == null ? + new CTGradientStop[0] : gradFill.getGsLst().getGsArray(); Arrays.sort(gs, (o1, o2) -> { int pos1 = o1.getPos(); diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java index 8867d69403..da25fc77e8 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java @@ -966,4 +966,21 @@ public class TestXSLFBugs { } } + + @Test + public void bug63200() throws Exception { + try (XMLSlideShow ss1 = XSLFTestDataSamples.openSampleDocument("63200.pptx")) { + assertEquals(1, ss1.getSlides().size()); + + XSLFSlide slide = ss1.getSlides().get(0); + + assertEquals(slide.getShapes().size(), 1); + XSLFGroupShape group = (XSLFGroupShape) slide.getShapes().get(0); + assertEquals(group.getShapes().size(), 2); + XSLFAutoShape oval = (XSLFAutoShape) group.getShapes().get(0); + XSLFAutoShape arrow = (XSLFAutoShape) group.getShapes().get(1); + assertNull(oval.getFillColor()); + assertNull(arrow.getFillColor()); + } + } } diff --git a/test-data/slideshow/63200.pptx b/test-data/slideshow/63200.pptx new file mode 100644 index 0000000000000000000000000000000000000000..6a8dc6cc84137574bf3ea9c32112606973e846e7 GIT binary patch literal 36778 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 AmH+?% literal 0 HcmV?d00001 -- 2.39.5