From: Dominik Stadler Date: Wed, 30 Dec 2015 20:31:23 +0000 (+0000) Subject: Bug 58616: Try to initialize with empty password if not done before X-Git-Tag: REL_3_14_FINAL~134 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=baee1a559994e4684d02e7007955828b4538e0ec;p=poi.git Bug 58616: Try to initialize with empty password if not done before git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1722407 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index bd77c3a2d1..39a2069b2c 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -199,6 +199,7 @@ public class TestAllFiles { //EXPECTED_FAILURES.add("poifs/protected_sha512.xlsx"); //EXPECTED_FAILURES.add("poifs/extenxls_pwd123.xlsx"); //EXPECTED_FAILURES.add("poifs/protected_agile.docx"); + EXPECTED_FAILURES.add("spreadsheet/58616.xlsx"); // TODO: fails XMLExportTest, is this ok? EXPECTED_FAILURES.add("spreadsheet/CustomXMLMapping-singleattributenamespace.xlsx"); diff --git a/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java b/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java index 1d6ddd398e..00d2f77e33 100644 --- a/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java @@ -127,6 +127,9 @@ public class StandardDecryptor extends Decryptor { _length = dis.readLong(); + if(getSecretKey() == null) { + verifyPassword(null); + } // limit wrong calculated ole entries - (bug #57080) // standard encryption always uses aes encoding, so blockSize is always 16 // http://stackoverflow.com/questions/3283787/size-of-data-after-aes-encryption diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java index ed7df2ed81..d2260dc998 100644 --- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java +++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.security.GeneralSecurityException; @@ -33,6 +34,7 @@ import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.IOUtils; +import org.apache.poi.xssf.XSSFTestDataSamples; import org.junit.Test; /** @@ -151,4 +153,13 @@ public class TestDecryptor { zis.close(); fs.close(); } + + @Test + public void test58616() throws IOException, GeneralSecurityException { + POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream(XSSFTestDataSamples.getSampleFile("58616.xlsx"))); + EncryptionInfo info = new EncryptionInfo(pfs); + Decryptor dec = Decryptor.getInstance(info); + //dec.verifyPassword(null); + dec.getDataStream(pfs); + } } \ No newline at end of file diff --git a/test-data/spreadsheet/58616.xlsx b/test-data/spreadsheet/58616.xlsx new file mode 100644 index 0000000000..9ab5739271 Binary files /dev/null and b/test-data/spreadsheet/58616.xlsx differ