aboutsummaryrefslogtreecommitdiff
path: root/t/t1501-worktree.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-12-16 10:50:09 -0800
committerJunio C Hamano <gitster@pobox.com>2009-12-16 12:45:25 -0800
commitb3100fd5557dbaad4eeb5690336758ef21bb08bb (patch)
treed2c55bbd6a9bf4f6152638a63149911715e1ba67 /t/t1501-worktree.sh
parent8b8e862490bba040299905cc0541560f24a11c41 (diff)
downloadgit-b3100fd5557dbaad4eeb5690336758ef21bb08bb.tar.gz
git-b3100fd5557dbaad4eeb5690336758ef21bb08bb.tar.xz
worktree: don't segfault with an absolute pathspec without a work tree
If a command is run with an absolute path as a pathspec inside a bare repository, e.g. "rev-list HEAD -- /home", the code tried to run strlen() on NULL, which is the result of get_git_work_tree(), and segfaulted. It should just fail instead. Currently the function returns NULL even inside .git/ in a repository with a work tree, but that is a separate issue. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t1501-worktree.sh')
-rwxr-xr-xt/t1501-worktree.sh15
1 files changed, 15 insertions, 0 deletions
diff --git a/t/t1501-worktree.sh b/t/t1501-worktree.sh
index f6a6f839a..74e644366 100755
--- a/t/t1501-worktree.sh
+++ b/t/t1501-worktree.sh
@@ -174,4 +174,19 @@ test_expect_success 'git grep' '
GIT_DIR=../.. GIT_WORK_TREE=.. git grep -l changed | grep dir/tracked)
'
+test_expect_success 'git commit' '
+ (
+ cd repo.git &&
+ GIT_DIR=. GIT_WORK_TREE=work git commit -a -m done
+ )
+'
+
+test_expect_success 'absolute pathspec should fail gracefully' '
+ (
+ cd repo.git || exit 1
+ git config --unset core.worktree
+ test_must_fail git log HEAD -- /home
+ )
+'
+
test_done