From 692caf0f3673b12126bd100a18496562d55d8375 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 14 Feb 2026 18:40:12 +0100 Subject: [PATCH] Avoid NPE with malformed master-style --- .../poi/hslf/usermodel/HSLFSlideMaster.java | 4 ++++ ...5f6fde99a8b3ea5a4946c258b7abad6f30b0c5.ppt | Bin 0 -> 9684 bytes test-data/spreadsheet/stress.xls | Bin 79360 -> 79872 bytes 3 files changed, 4 insertions(+) create mode 100644 test-data/slideshow/cf5f6fde99a8b3ea5a4946c258b7abad6f30b0c5.ppt diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideMaster.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideMaster.java index 65dcf6dda5..b0929d3bb7 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideMaster.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideMaster.java @@ -112,6 +112,10 @@ public final class HSLFSlideMaster extends HSLFMasterSheet { return null; } final TxMasterStyleAtom t = _txmaster[txtype]; + if (t == null) { + throw new IllegalStateException("Cannot get master-style for type " + txtype); + } + final List styles = isCharacter ? t.getCharacterStyles() : t.getParagraphStyles(); // TODO: what is the reaction for readOnly=false and styles.isEmpty()? final int minLevel = Math.min(level, styles.size()-1); diff --git a/test-data/slideshow/cf5f6fde99a8b3ea5a4946c258b7abad6f30b0c5.ppt b/test-data/slideshow/cf5f6fde99a8b3ea5a4946c258b7abad6f30b0c5.ppt new file mode 100644 index 0000000000000000000000000000000000000000..a92aac2d045fd12c032cf0629a4b615b34d5bb8c GIT binary patch literal 9684 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 DqXcYr delta 3514 zcmZ9MTTqo%6vx*(7dYGx*MnRIK~a>8fQW%XUNG=33W-X}IG!fM;>c~9f~je0s-dRS zxXsJ>(DaZ!G{#J4(ncP7u&lI9CDY8VmRed~C_-uN-P#BCCnJmf|9<@8 z`N)no-*e!G_gwztkuN)kLjmRvG)JYi_{X*n`agQ?1xF=(XdkF=J8I9)hJJXRfJoZk zI2GVz2EhDkfY*`%ayJ63O&lm`Z^GE2Rf)0%JVhkZ&!~T&FSBMSY&>;<1BP2ys^vBbSaH~ zz+FnCA8?nl=wZ5)7jB~)XOp?x~Qao&HF;s zK7GzZz($sHV$g%B_>DMErQ#fsN2x<7*y(kVLSIVRPksO%IL{WBVR5mgFqteDL_L+D zCCsqMxjpbLTfz-XI9m=#%SCZyq9wwx$dl=T@7N+=C!XLpHrc9w)9HN4`S~`ON?QmcPn-Oku7e+;%3WrY57S+q)eD4*097W%g=0yGc0jz zX`$`-i+GYsy8evf4NHQuTowZZr}s=|M^n#WC87 zHgS`R+s;g(W(u+~&+Fi{h*NohBcX_d@&M~2T&y0Cli6Z}Ew-?;6&u3rY~Af>Hq9Bz zX^Bp+Q0jGYT55PpEnfNR@IV-|Wd>VjVda<91L4fh(cRjn&rNvvNys^wy8Eln>m2Z0w z#4$TxcRL|xi0AZvP6H!3xX)IZz;U%9uC|D4lsJ*u8e(&R4&$k5nCDL7^a0&2JP-3K zJ)ABuybCPeh02@E>_Tm5%cFrOak@ySdnom$aJty=F1C1Ul{b~yT7#{%uuBx1#_ST^ zEn_;(kk09YI<2GBo55+F;jOcH>y1xBf+TvZKywjLnW3X#1 zY=dI+m~GJA3i4@&>71_B>3T}NGdNvmc-L9Hjmn$PY@@+8TG%GV&SbVpce^NOn8oQs zIt`ymGZb*T-texsc$<~CklAK~ZMLu*6kEjX2HmZny19!v-Kf*Ulvd8>bd%xTWbw8r zZwa$4+7LGjx4TO@eORacv#47cr<-+pn9|BQoNh6?ZLxG~Ro%*&ZDlqPSAZw+{UWTe zN775anxMY7K5qAjRV5fNno2Oz_3q{aXU^`wfc`8;g6J#3TPQ?FDL!kvoD&!+#Sr^{ DPpD%E