diff options
author | Dominik Stadler <centic@apache.org> | 2023-08-07 16:18:46 +0000 |
---|---|---|
committer | Dominik Stadler <centic@apache.org> | 2023-08-07 16:18:46 +0000 |
commit | 8e40aabb187903a8d8cf60d6bbff23d3023751a6 (patch) | |
tree | b4fdb670de0c2b6d33ce2e44c4308c168393d49f /poi-scratchpad/src/main/java/org | |
parent | 738d533a83669b1335cbd9a069c3491bc05aae1f (diff) | |
download | poi-8e40aabb187903a8d8cf60d6bbff23d3023751a6.tar.gz poi-8e40aabb187903a8d8cf60d6bbff23d3023751a6.zip |
Bug 66425: Avoid a ClassCastException found via oss-fuzz
We try to avoid throwing ClassCastException, but it was possible
to trigger one here with a specially crafted input-file
Should fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61259
Also fix handling of NullPointerException
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1911517 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-scratchpad/src/main/java/org')
-rw-r--r-- | poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java index 54edf47faa..70fb287026 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java @@ -72,6 +72,7 @@ import org.apache.poi.poifs.crypt.EncryptionInfo; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.DocumentInputStream; +import org.apache.poi.poifs.filesystem.Entry; import org.apache.poi.poifs.filesystem.EntryUtils; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.sl.usermodel.PictureData; @@ -229,7 +230,11 @@ public final class HSLFSlideShowImpl extends POIDocument implements Closeable { } // Get the main document stream - DocumentEntry docProps = (DocumentEntry)dir.getEntry(POWERPOINT_DOCUMENT); + final Entry entry = dir.getEntry(POWERPOINT_DOCUMENT); + if (!(entry instanceof DocumentEntry)) { + throw new IllegalArgumentException("Had unexpected type of entry for name: " + POWERPOINT_DOCUMENT + ": " + entry.getClass()); + } + DocumentEntry docProps = (DocumentEntry) entry; // Grab the document stream int len = docProps.getSize(); |