Skip to content

Commit c8f6478

Browse files
dschogitster
authored andcommitted
tests: verify that clone -c core.hooksPath=/dev/null works again
As part of the protections added in Git v2.45.1 and friends, repository-local `core.hooksPath` settings are no longer allowed, as a defense-in-depth mechanism to prevent future Git vulnerabilities to raise to critical level if those vulnerabilities inadvertently allow the repository-local config to be written. What the added protection did not anticipate is that such a repository-local `core.hooksPath` can not only be used to point to maliciously-placed scripts in the current worktree, but also to _prevent_ hooks from being called altogether. We just reverted the `core.hooksPath` protections, based on the Git maintainer's recommendation in https://lore.kernel.org/git/[email protected]/ to address this concern as well as related ones. Let's make sure that we won't regress while trying to protect the clone operation further. Reported-by: Brooke Kuhlmann <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 75631a3 commit c8f6478

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

t/t1350-config-hooks-path.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,11 @@ test_expect_success 'git rev-parse --git-path hooks' '
4141
test .git/custom-hooks/abc = "$(cat actual)"
4242
'
4343

44+
test_expect_success 'core.hooksPath=/dev/null' '
45+
git clone -c core.hooksPath=/dev/null . no-templates &&
46+
value="$(git -C no-templates config --local core.hooksPath)" &&
47+
# The Bash used by Git for Windows rewrites `/dev/null` to `nul`
48+
{ test /dev/null = "$value" || test nul = "$value"; }
49+
'
50+
4451
test_done

0 commit comments

Comments
 (0)