Pull request #603: RED-5248: Fix handling of temp files

Merge in RED/persistence-service from RED-5248 to master

* commit 'abea17381f12891846b1eb480e60bfd2e93e2a5b':
  RED-5248: Fix handling of temp files
This commit is contained in:
Philipp Schramm 2023-01-30 12:24:49 +01:00
commit cd92696e33
2 changed files with 10 additions and 20 deletions

View File

@ -6,10 +6,6 @@ import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -17,8 +13,6 @@ import java.util.Set;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import org.apache.commons.lang3.SystemUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@ -35,20 +29,7 @@ public class FileSystemBackedArchiver implements AutoCloseable {
@SneakyThrows @SneakyThrows
public FileSystemBackedArchiver() { public FileSystemBackedArchiver() {
if (SystemUtils.IS_OS_UNIX) { tempFile = FileUtils.createTempFile("archive", ".zip");
FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(PosixFilePermissions.fromString("rwx------"));
tempFile = Files.createTempFile("archive", ".zip", attr).toFile();
} else {
tempFile = Files.createTempFile("archive", ".zip").toFile();
boolean isReadable = tempFile.setReadable(true, true);
boolean isWritable = tempFile.setWritable(true, true);
boolean isExecutable = tempFile.setExecutable(true, true);
if (!isReadable || !isWritable || !isExecutable) {
log.warn("Could not archive temporary zip file.");
}
}
zipOutputStream = new ZipOutputStream(new FileOutputStream(tempFile)); zipOutputStream = new ZipOutputStream(new FileOutputStream(tempFile));
} }

View File

@ -31,6 +31,15 @@ public class FileUtils {
} }
public File createTempFile(String filenamePrefix, String filenameSuffix) throws IOException {
File tempFile = Files.createTempFile(filenamePrefix, filenameSuffix).toFile();
setRWPermissionsOnlyForOwner(tempFile);
return tempFile;
}
public File createTempFile(byte[] content, String filenamePrefix, String filenameSuffix) throws IOException { public File createTempFile(byte[] content, String filenamePrefix, String filenameSuffix) throws IOException {
File tempFile = Files.createTempFile(filenamePrefix, filenameSuffix).toFile(); File tempFile = Files.createTempFile(filenamePrefix, filenameSuffix).toFile();