diff --git a/robocode.battle/src/main/java/net/sf/robocode/recording/RecordManager.java b/robocode.battle/src/main/java/net/sf/robocode/recording/RecordManager.java index 02307c149..7c3c61aa7 100644 --- a/robocode.battle/src/main/java/net/sf/robocode/recording/RecordManager.java +++ b/robocode.battle/src/main/java/net/sf/robocode/recording/RecordManager.java @@ -14,8 +14,6 @@ import net.sf.robocode.battle.snapshot.TurnSnapshot; import net.sf.robocode.io.FileUtil; import net.sf.robocode.io.Logger; -import static net.sf.robocode.io.Logger.logError; - import net.sf.robocode.serialization.*; import net.sf.robocode.settings.ISettingsManager; import net.sf.robocode.version.IVersionManager; @@ -29,6 +27,8 @@ import java.io.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; @@ -37,6 +37,8 @@ import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; +import static net.sf.robocode.io.Logger.logError; + /** * @author Pavel Savara (original) @@ -111,22 +113,25 @@ public void detachRecorder() { } private void createTempFile() { - try { - if (tempFile == null) { - tempFile = File.createTempFile("robocode-battle-records", ".tmp"); - tempFile.deleteOnExit(); - } else { - if (!tempFile.delete()) { - Logger.logError("Could not delete temp file"); - } - if (!tempFile.createNewFile()) { - throw new Error("Temp file creation failed"); + AccessController.doPrivileged((PrivilegedAction) () -> { + try { + if (tempFile == null) { + tempFile = File.createTempFile("robocode-battle-records", ".tmp"); + tempFile.deleteOnExit(); + } else { + if (!tempFile.delete()) { + logError("Could not delete temp file"); + } + if (!tempFile.createNewFile()) { + throw new Error("Temp file creation failed"); + } } + } catch (IOException e) { + logError(e); + throw new Error("Temp file creation failed", e); } - } catch (IOException e) { - logError(e); - throw new Error("Temp file creation failed", e); - } + return null; + }); } void prepareInputStream() {