diff options
author | Nick Burch <nick@apache.org> | 2007-04-23 10:45:49 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2007-04-23 10:45:49 +0000 |
commit | 50610894c45344a47a7d5b3f7ac2c26690d6a338 (patch) | |
tree | be30259e0300e4b61fef9b7f43045151af4a9384 /src/java | |
parent | 190af5a8d99cce076d927c1c638fcd9a5c9265d2 (diff) | |
download | poi-50610894c45344a47a7d5b3f7ac2c26690d6a338.tar.gz poi-50610894c45344a47a7d5b3f7ac2c26690d6a338.zip |
Detect, and report a meaningful error, if we come across an Office 2007 XML document
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@531419 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/org/apache/poi/poifs/filesystem/OfficeXmlFileException.java | 36 | ||||
-rw-r--r-- | src/java/org/apache/poi/poifs/storage/HeaderBlockReader.java | 8 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/java/org/apache/poi/poifs/filesystem/OfficeXmlFileException.java b/src/java/org/apache/poi/poifs/filesystem/OfficeXmlFileException.java new file mode 100644 index 0000000000..b83ccd0f27 --- /dev/null +++ b/src/java/org/apache/poi/poifs/filesystem/OfficeXmlFileException.java @@ -0,0 +1,36 @@ + +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + + + +package org.apache.poi.poifs.filesystem; + +/** + * This exception is thrown when we try to open a file that's actually + * an Office 2007+ XML file, rather than an OLE2 file (which is what + * POI works with) + * + * @author Nick Burch + */ + +public class OfficeXmlFileException extends IllegalArgumentException +{ + public OfficeXmlFileException(String s) { + super(s); + } +} diff --git a/src/java/org/apache/poi/poifs/storage/HeaderBlockReader.java b/src/java/org/apache/poi/poifs/storage/HeaderBlockReader.java index 70e1c301b7..16c94e2c23 100644 --- a/src/java/org/apache/poi/poifs/storage/HeaderBlockReader.java +++ b/src/java/org/apache/poi/poifs/storage/HeaderBlockReader.java @@ -24,6 +24,7 @@ import java.io.*; import java.util.*; import org.apache.poi.poifs.common.POIFSConstants; +import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.util.IOUtils; import org.apache.poi.util.IntegerField; import org.apache.poi.util.LittleEndian; @@ -89,6 +90,13 @@ public class HeaderBlockReader if (signature.get() != _signature) { + // Is it one of the usual suspects? + if(_data[0] == 0x50 && _data[1] == 0x4b && _data[2] == 0x03 && + _data[3] == 0x04) { + throw new OfficeXmlFileException("The supplied data appears to be in the Office 2007+ XML. POI only supports OLE2 Office documents"); + } + + // Give a generic error throw new IOException("Invalid header signature; read " + signature.get() + ", expected " + _signature); |