diff --git a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java index 178f6568ee..65c95ffee0 100644 --- a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java @@ -36,6 +36,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import org.apache.commons.math3.util.ArithmeticUtils; import org.apache.poi.EmptyFileException; import org.apache.poi.poifs.common.POIFSBigBlockSize; import org.apache.poi.poifs.common.POIFSConstants; @@ -407,7 +408,8 @@ public class POIFSFileSystem extends BlockStore newBAT.setOurBlockIndex(offset); // Ensure there's a spot in the file for it ByteBuffer buffer = ByteBuffer.allocate(bigBlockSize.getBigBlockSize()); - int writeTo = (1 + offset) * bigBlockSize.getBigBlockSize(); // Header isn't in BATs + // Header isn't in BATs + long writeTo = ArithmeticUtils.mulAndCheck((1 + (long)offset), (long)bigBlockSize.getBigBlockSize()); _data.write(buffer, writeTo); // All done return newBAT; diff --git a/src/java/org/apache/poi/poifs/filesystem/TempFilePOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/TempFilePOIFSFileSystem.java index c16ff035a0..be162b6079 100644 --- a/src/java/org/apache/poi/poifs/filesystem/TempFilePOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/TempFilePOIFSFileSystem.java @@ -42,7 +42,7 @@ public class TempFilePOIFSFileSystem extends POIFSFileSystem { } public void close() throws IOException { - if (tempFile != null) tempFile.delete(); + if (tempFile != null && tempFile.exists()) tempFile.delete(); super.close(); }