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.IOException;
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.HashSet;
import java.util.List;
@ -17,8 +13,6 @@ import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.lang3.SystemUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.SneakyThrows;
@ -35,20 +29,7 @@ public class FileSystemBackedArchiver implements AutoCloseable {
@SneakyThrows
public FileSystemBackedArchiver() {
if (SystemUtils.IS_OS_UNIX) {
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.");
}
}
tempFile = FileUtils.createTempFile("archive", ".zip");
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 {
File tempFile = Files.createTempFile(filenamePrefix, filenameSuffix).toFile();