mirror of https://github.com/apache/poi.git
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=61162 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1911459 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
acf61f325f
commit
57d746827f
|
@ -45,22 +45,16 @@ public class HPBFFileHandler extends POIFSFileHandler {
|
|||
void test() throws Exception {
|
||||
File file = new File("test-data/publisher/SampleBrochure.pub");
|
||||
|
||||
InputStream stream = new FileInputStream(file);
|
||||
try {
|
||||
try (InputStream stream = new FileInputStream(file)) {
|
||||
handleFile(stream, file.getPath());
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
|
||||
handleExtracting(file);
|
||||
|
||||
stream = new FileInputStream(file);
|
||||
try {
|
||||
try (InputStream stream = new FileInputStream(file)) {
|
||||
try (PublisherTextExtractor extractor = new PublisherTextExtractor(stream)) {
|
||||
assertNotNull(extractor.getText());
|
||||
}
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.io.InputStream;
|
|||
|
||||
import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream;
|
||||
import org.apache.poi.poifs.filesystem.DirectoryNode;
|
||||
import org.apache.poi.poifs.filesystem.Entry;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
|
||||
/**
|
||||
|
@ -57,7 +58,11 @@ public abstract class HPBFPart {
|
|||
DirectoryNode dir = baseDir;
|
||||
for(int i=0; i<path.length-1; i++) {
|
||||
try {
|
||||
dir = (DirectoryNode)dir.getEntry(path[i]);
|
||||
Entry entry = dir.getEntry(path[i]);
|
||||
if (!(entry instanceof DirectoryNode)) {
|
||||
throw new IllegalArgumentException("Had unexpected type of entry for path: " + path[i] + ": " + entry);
|
||||
}
|
||||
dir = (DirectoryNode) entry;
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new IllegalArgumentException("File invalid - failed to find directory entry '"
|
||||
+ path[i] + "': " + e);
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue