From c9ff8ffe57d973a6dfdcecd4dbe4c29fdb4866f8 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Thu, 15 Oct 2026 22:39:12 -1000 Subject: Hold a scanned defbranch to a ref name The index stats the default branch below the repository to date it, and a scanned repository sets its own defbranch, which was not held to what a ref may hold, so one spelled as a path reached a file outside. --- tests/t0303-robustness.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tests/t0303-robustness.sh') diff --git a/tests/t0303-robustness.sh b/tests/t0303-robustness.sh index 9969687..45c17f5 100755 --- a/tests/t0303-robustness.sh +++ b/tests/t0303-robustness.sh @@ -855,4 +855,15 @@ test_expect_success 'a notes ref that names no tree is passed over' ' grep "^Status: 404" tmp ' +# A scanned repository names its own default branch, which the index stats +# below the repository to date it, so the name is held to what a ref may be. +test_expect_success 'a scanned defbranch cannot name a path outside the repository' ' + mkdir -p secret && + touch -t 200001010000 secret/file && + echo "defbranch=../../../../secret/file" >scan/b.git/cgitrc && + CGIT_CONFIG="$PWD/gitcfgrc" QUERY_STRING="url=" cgit >tmp && + grep ">b.git" tmp && + ! grep "data-ut=.946" tmp +' + test_done -- cgit 2.12.1