From: Ævar Arnfjörð Bjarmason Date: Wed, 3 Jan 2018 18:48:52 +0000 (+0000) Subject: bisect: fix a regression causing a segfault X-Git-Tag: v2.16.0-rc2~7^2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/2e9fdc795cb27725e6dda7f4ba78ec0d9553b36a bisect: fix a regression causing a segfault In 7c117184d7 ("bisect: fix off-by-one error in `best_bisection_sorted()`", 2017-11-05) the more careful logic dealing with freeing p->next in 50e62a8e70 ("rev-list: implement --bisect-all", 2007-10-22) was removed. Restore the more careful check to avoid segfaulting. Ideally this would come with a test case, but we don't have steps to reproduce this, only a backtrace from gdb pointing to this being the issue. Reported-by: Yasushi SHOJI Signed-off-by: Ævar Arnfjörð Bjarmason Acked-by: Martin Ågren Signed-off-by: Junio C Hamano --- diff --git a/bisect.c b/bisect.c index 3756f127b0..87e4dee16d 100644 --- a/bisect.c +++ b/bisect.c @@ -229,8 +229,10 @@ static struct commit_list *best_bisection_sorted(struct commit_list *list, int n if (i < cnt - 1) p = p->next; } - free_commit_list(p->next); - p->next = NULL; + if (p) { + free_commit_list(p->next); + p->next = NULL; + } strbuf_release(&buf); free(array); return list;