From 76b30214ae7e330642e47b002ed856c892200ac6 Mon Sep 17 00:00:00 2001 From: Dylan De Faoite Date: Thu, 16 Jul 2026 21:30:58 +0100 Subject: [PATCH] fix(dirs): add defensive ownership check --- .../vodsystem/services/DirectoryService.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/com/ddf/vodsystem/services/DirectoryService.java b/src/main/java/com/ddf/vodsystem/services/DirectoryService.java index 92cd20a..537b9aa 100644 --- a/src/main/java/com/ddf/vodsystem/services/DirectoryService.java +++ b/src/main/java/com/ddf/vodsystem/services/DirectoryService.java @@ -10,6 +10,7 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.List; import java.util.stream.Stream; import java.nio.file.StandardCopyOption; @@ -129,11 +130,29 @@ public class DirectoryService { } } + private void checkDirPermissions() { + List dirs = List.of( + Path.of(tempInputsDir), + Path.of(tempOutputsDir), + Path.of(usersDir) + ); + + List bad = dirs.stream() + .filter(p -> !Files.isDirectory(p) || !Files.isReadable(p) || !Files.isWritable(p)) + .toList(); + + if (!bad.isEmpty()) { + throw new IllegalStateException("Unusable directories: " + bad); + } + } + @PostConstruct public void createDirectoriesIfNotExist() throws IOException { Files.createDirectories(Path.of(tempInputsDir)); Files.createDirectories(Path.of(tempOutputsDir)); Files.createDirectories(Path.of(usersDir)); + + checkDirPermissions(); } @Scheduled(fixedRate = TEMP_DIR_CLEANUP_RATE)