Re: [PATCH v2] blame: fix segfault on untracked files
From: Junio C Hamano <hidden>
Date: 2016-08-29 21:17:57
Thomas Gummerer [off-list ref] writes:
quoted
The point of this fix is not that we show the exact error message, but we fail in a controlled manner. I think test_expect_success 'blame untracked file in empty repo' ' >untracked && test_must_fail git blame untracked ' is sufficient.Yeah, I agree with that. Thanks for the review!
Thanks for a quick follow-up fix during -rc period.
quoted hunk
quoted
builtin/blame.c | 3 ++-t/t8002-blame.sh | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-)diff --git a/builtin/blame.c b/builtin/blame.c index 7ec7823..a5bbf91 100644 --- a/builtin/blame.c +++ b/builtin/blame.c@@ -2244,7 +2244,8 @@ static void verify_working_tree_path(struct commit *work_tree, const char *path) pos = cache_name_pos(path, strlen(path)); if (pos >= 0) ; /* path is in the index */ - else if (!strcmp(active_cache[-1 - pos]->name, path)) + else if (-1 - pos < active_nr && + !strcmp(active_cache[-1 - pos]->name, path)) ; /* path is in the index, unmerged */ else die("no such path '%s' in HEAD", path);diff --git a/t/t8002-blame.sh b/t/t8002-blame.sh index ff09ace..ab79de9 100755 --- a/t/t8002-blame.sh +++ b/t/t8002-blame.sh@@ -6,6 +6,11 @@ test_description='git blame' PROG='git blame -c' . "$TEST_DIRECTORY"/annotate-tests.sh +test_expect_success 'blame untracked file in empty repo' ' + >untracked && + test_must_fail git blame untracked +' + PROG='git blame -c -e' test_expect_success 'blame --show-email' ' check_count \