From 3c7bb45e54f3bb07a8b9b71c3cd780bf3ab2df1d Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 15 Apr 2019 15:45:59 +0000 Subject: [PATCH] use ArithmeticUtils for calculations that might overflow git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1857594 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java | 4 +++- .../apache/poi/poifs/filesystem/TempFilePOIFSFileSystem.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) 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(); }