This is an automated email from the ASF dual-hosted git repository. centic pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/poi.git
commit 0ec4434f599d1d34922ee49ff139d9a5d28f3fda Author: Dominik Stadler <[email protected]> AuthorDate: Tue Jan 6 23:50:13 2026 +0100 Avoid NPE with broken file --- .../org/apache/poi/hslf/usermodel/HSLFShape.java | 10 ++++++---- .../poi/hslf/usermodel/HSLFTextParagraph.java | 3 +++ .../org/apache/poi/hslf/dev/TestPPTXMLDump.java | 1 + .../apache/poi/hslf/dev/TestSlideShowDumper.java | 1 + .../60f557c0a46bcb0068b1c3e15589dac383307bc8.ppt | Bin 0 -> 44032 bytes test-data/spreadsheet/stress.xls | Bin 73216 -> 73728 bytes 6 files changed, 11 insertions(+), 4 deletions(-) diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFShape.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFShape.java index 87fa7c21fb..b234a80833 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFShape.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFShape.java @@ -408,11 +408,13 @@ public abstract class HSLFShape implements Shape<HSLFShape,HSLFTextParagraph> { if (fSchemeIndex && sheet != null) { //red is the index to the color scheme ColorSchemeAtom ca = sheet.getColorScheme(); - int schemeColor = ca.getColor(ecr.getSchemeIndex()); + if (ca != null) { + int schemeColor = ca.getColor(ecr.getSchemeIndex()); - rgb[0] = (schemeColor >> 0) & 0xFF; - rgb[1] = (schemeColor >> 8) & 0xFF; - rgb[2] = (schemeColor >> 16) & 0xFF; + rgb[0] = (schemeColor >> 0) & 0xFF; + rgb[1] = (schemeColor >> 8) & 0xFF; + rgb[2] = (schemeColor >> 16) & 0xFF; + } } else if (fPaletteIndex) { //TODO } else if (fPaletteRGB) { diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java index 4e5e3280d2..d7b4b3cb71 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java @@ -1665,6 +1665,9 @@ public final class HSLFTextParagraph implements TextParagraph<HSLFShape,HSLFText return null; } ColorSchemeAtom ca = sheet.getColorScheme(); + if (ca == null) { + throw new IllegalStateException("Cannot read color scheme from sheet"); + } tmp = new Color(ca.getColor(cidx), true); break; // Color is an sRGB value specified by red, green, and blue fields. diff --git a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java index 213b05387c..7c2ec525c7 100644 --- a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java +++ b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java @@ -37,6 +37,7 @@ public class TestPPTXMLDump extends BaseTestPPTIterating { LOCAL_EXCLUDED.add("clusterfuzz-testcase-minimized-POIHSLFFuzzer-6360479850954752.ppt"); LOCAL_EXCLUDED.add("ppt_with_png_encrypted.ppt"); LOCAL_EXCLUDED.add("clusterfuzz-testcase-minimized-POIHSLFFuzzer-6614960949821440.ppt"); + LOCAL_EXCLUDED.add("60f557c0a46bcb0068b1c3e15589dac383307bc8.ppt"); } @Test diff --git a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideShowDumper.java b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideShowDumper.java index 290616ce10..1c97bba430 100644 --- a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideShowDumper.java +++ b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideShowDumper.java @@ -39,6 +39,7 @@ public class TestSlideShowDumper extends BaseTestPPTIterating { FAILING.add("41384.ppt"); FAILING.add("bug56240.ppt"); FAILING.add("clusterfuzz-testcase-minimized-POIHSLFFuzzer-6360479850954752.ppt"); + FAILING.add("60f557c0a46bcb0068b1c3e15589dac383307bc8.ppt"); } static final Set<String> LOCAL_EXCLUDED = new HashSet<>(); diff --git a/test-data/slideshow/60f557c0a46bcb0068b1c3e15589dac383307bc8.ppt b/test-data/slideshow/60f557c0a46bcb0068b1c3e15589dac383307bc8.ppt new file mode 100644 index 0000000000..3d8459400c Binary files /dev/null and b/test-data/slideshow/60f557c0a46bcb0068b1c3e15589dac383307bc8.ppt differ diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index a3a5a5694a..40c8ad9c04 100644 Binary files a/test-data/spreadsheet/stress.xls and b/test-data/spreadsheet/stress.xls differ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
