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 <yasushi.shoji@gmail.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Acked-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason committed
Jan 3, 2018 at 18:48 UTC
2e9fdc795cb27725e6dda7f4ba78ec0d9553b36a
1 file changed
+4
-2
bisect.c
+4
-2
@@ -229,8 +229,10 @@ static struct commit_list *best_bisection_sorted(struct commit_list *list, int n
229
if (i < cnt - 1)
230
p = p->next;
231
}
232
- free_commit_list(p->next);
233
- p->next = NULL;
232
+ if (p) {
233
+ free_commit_list(p->next);
234
+ p->next = NULL;
235
+ }
236
strbuf_release(&buf);
237
free(array);
238
return list;