diff options
author | Andreas Beeker <kiwiwings@apache.org> | 2017-08-11 20:47:48 +0000 |
---|---|---|
committer | Andreas Beeker <kiwiwings@apache.org> | 2017-08-11 20:47:48 +0000 |
commit | a98350e40bd3c6ed74bdc2cc89372f765d0663f6 (patch) | |
tree | bd5dcdcf90d32afbc8a109cfe587278cbb90b0b1 /src/java/org/apache/poi/poifs/macros/VBAMacroReader.java | |
parent | 299f33b8d80acf091c0ac5dface0e3778432f10c (diff) | |
download | poi-a98350e40bd3c6ed74bdc2cc89372f765d0663f6.tar.gz poi-a98350e40bd3c6ed74bdc2cc89372f765d0663f6.zip |
#61381 - PushbackInputStreams passed to ZipHelper may not hold 8 bytes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1804854 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/poi/poifs/macros/VBAMacroReader.java')
-rw-r--r-- | src/java/org/apache/poi/poifs/macros/VBAMacroReader.java | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java b/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java index 83eb7295c7..bad012e293 100644 --- a/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java +++ b/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java @@ -17,8 +17,8 @@ package org.apache.poi.poifs.macros; -import static org.apache.poi.util.StringUtil.startsWithIgnoreCase; import static org.apache.poi.util.StringUtil.endsWithIgnoreCase; +import static org.apache.poi.util.StringUtil.startsWithIgnoreCase; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -27,7 +27,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.io.PushbackInputStream; import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; @@ -38,6 +37,7 @@ import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.DocumentNode; import org.apache.poi.poifs.filesystem.Entry; +import org.apache.poi.poifs.filesystem.FileMagic; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.util.CodePageUtil; @@ -67,13 +67,12 @@ public class VBAMacroReader implements Closeable { private NPOIFSFileSystem fs; public VBAMacroReader(InputStream rstream) throws IOException { - PushbackInputStream stream = new PushbackInputStream(rstream, 8); - byte[] header8 = IOUtils.peekFirst8Bytes(stream); - - if (NPOIFSFileSystem.hasPOIFSHeader(header8)) { - fs = new NPOIFSFileSystem(stream); + InputStream is = FileMagic.prepareToCheckMagic(rstream); + FileMagic fm = FileMagic.valueOf(is); + if (fm == FileMagic.OLE2) { + fs = new NPOIFSFileSystem(is); } else { - openOOXML(stream); + openOOXML(is); } } |