diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java index da669354df..8130f7d7e3 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java @@ -511,8 +511,18 @@ public class HwmfMisc { @Override public int init(LittleEndianInputStream leis, long recordSize, int recordFunction) throws IOException { - style = HwmfBrushStyle.valueOf(leis.readUShort()); - colorUsage = ColorUsage.valueOf(leis.readUShort()); + int brushStyle = leis.readUShort(); + style = HwmfBrushStyle.valueOf(brushStyle); + if (style == null) { + throw new IllegalArgumentException("Could not read brush-style " + brushStyle); + } + + int colorUsageEnum = leis.readUShort(); + colorUsage = ColorUsage.valueOf(colorUsageEnum); + if (colorUsage == null) { + throw new IllegalArgumentException("Could not read color-usage " + colorUsage); + } + int size = 2*LittleEndianConsts.SHORT_SIZE; switch (style) { case BS_SOLID: diff --git a/test-data/slideshow/clusterfuzz-testcase-minimized-6701721724125184.wmf b/test-data/slideshow/clusterfuzz-testcase-minimized-6701721724125184.wmf new file mode 100644 index 0000000000..abda269ddb Binary files /dev/null and b/test-data/slideshow/clusterfuzz-testcase-minimized-6701721724125184.wmf differ diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index 099e41e45e..cd4be7f1dc 100644 Binary files a/test-data/spreadsheet/stress.xls and b/test-data/spreadsheet/stress.xls differ