diff options
author | PJ Fanning <fanningpj@apache.org> | 2021-12-28 12:36:51 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2021-12-28 12:36:51 +0000 |
commit | d442ea645c543fd86a41ca9a88f96b8e0c0aae4d (patch) | |
tree | 8feaa0264ffafb7276a6fb6265cd1a7b4a436630 /poi | |
parent | 57852e0c7d82eb0b547b1550490e72962ba0715d (diff) | |
download | poi-d442ea645c543fd86a41ca9a88f96b8e0c0aae4d.tar.gz poi-d442ea645c543fd86a41ca9a88f96b8e0c0aae4d.zip |
[bug-65772] stop using deleteOnExit in DefaultTempFileCreationStrategy
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1896474 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi')
3 files changed, 19 insertions, 5 deletions
diff --git a/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java b/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java index 7f174b2381..d4ae39bf47 100644 --- a/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java +++ b/poi/src/main/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java @@ -267,7 +267,9 @@ public abstract class ChunkedCipherOutputStream extends FilterOutputStream { throw new IOException(e); } finally { if (fileOut != null) { - fileOut.delete(); + if (!fileOut.delete()) { + //ignore + } } } } diff --git a/poi/src/main/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java b/poi/src/main/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java index d5fbc712f8..0e1beaeb11 100644 --- a/poi/src/main/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java +++ b/poi/src/main/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java @@ -131,9 +131,10 @@ public class StandardEncryptor extends Encryptor { protected long countBytes; protected final File fileOut; protected final DirectoryNode dir; + protected final boolean deleteFile; @SuppressWarnings({"resource", "squid:S2095"}) - private StandardCipherOutputStream(DirectoryNode dir, File fileOut) throws IOException { + private StandardCipherOutputStream(DirectoryNode dir, File fileOut, boolean deleteFile) throws IOException { // although not documented, we need the same padding as with agile encryption // and instead of calculating the missing bytes for the block size ourselves // we leave it up to the CipherOutputStream, which generates/saves them on close() @@ -147,12 +148,13 @@ public class StandardEncryptor extends Encryptor { super( new CipherOutputStream(new FileOutputStream(fileOut), getCipher(getSecretKey(), "PKCS5Padding")) ); + this.deleteFile = deleteFile; this.fileOut = fileOut; this.dir = dir; } protected StandardCipherOutputStream(DirectoryNode dir) throws IOException { - this(dir, TempFile.createTempFile("encrypted_package", "crypt")); + this(dir, TempFile.createTempFile("encrypted_package", "crypt"), true); } @Override @@ -172,6 +174,11 @@ public class StandardEncryptor extends Encryptor { // the CipherOutputStream adds the padding bytes on close() super.close(); writeToPOIFS(); + if (deleteFile && fileOut != null) { + if (!fileOut.delete()) { + //ignore + } + } } void writeToPOIFS() throws IOException { diff --git a/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java b/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java index 0155ab0fe1..3e7c1ab2a2 100644 --- a/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java +++ b/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java @@ -618,7 +618,12 @@ public final class ExcelFileFormatDocFunctionExtractor { // } File tempEFFDocFile = downloadSourceFile(); - processFile(tempEFFDocFile, outFile); - tempEFFDocFile.delete(); + try { + processFile(tempEFFDocFile, outFile); + } finally { + if (!tempEFFDocFile.delete()) { + //ignore + } + } } } |