From 2d74b000c4bd505bc5f43334293f001fc4e846b1 Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Fri, 27 Feb 2026 07:51:50 +0100 Subject: [PATCH] Throw exception when clone repository name is blank Prevents corrupting the shared drive by writing directly into the root worktree or gitdir paths when the name cannot be derived. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../be/seeseepuff/webgit/service/GitService.java | 2 ++ .../be/seeseepuff/webgit/service/GitServiceTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/be/seeseepuff/webgit/service/GitService.java b/src/main/java/be/seeseepuff/webgit/service/GitService.java index 09b3d2e..37481fd 100644 --- a/src/main/java/be/seeseepuff/webgit/service/GitService.java +++ b/src/main/java/be/seeseepuff/webgit/service/GitService.java @@ -36,6 +36,8 @@ public class GitService { if (name == null || name.isBlank()) name = deriveRepositoryName(url); + if (name.isBlank()) + throw new IllegalArgumentException("Repository name must not be blank"); Path worktree = properties.getWorktreePath().resolve(name); Path gitDir = properties.getGitDirPath().resolve(name); diff --git a/src/test/java/be/seeseepuff/webgit/service/GitServiceTest.java b/src/test/java/be/seeseepuff/webgit/service/GitServiceTest.java index fe54186..d97fa89 100644 --- a/src/test/java/be/seeseepuff/webgit/service/GitServiceTest.java +++ b/src/test/java/be/seeseepuff/webgit/service/GitServiceTest.java @@ -299,4 +299,16 @@ class GitServiceTest String expectedName = gitService.deriveRepositoryName(bareRemote.toUri().toString()); assertTrue(Files.exists(worktreePath.resolve(expectedName))); } + + @Test + void cloneWithBlankUrlAndBlankNameThrows() + { + assertThrows(IllegalArgumentException.class, () -> gitService.cloneRepository("", "")); + } + + @Test + void cloneWithUrlDerivingBlankNameThrows() + { + assertThrows(IllegalArgumentException.class, () -> gitService.cloneRepository(".git", null)); + } }