]> git.ipfire.org Git - thirdparty/git.git/commitdiff
bisect: fix a regression causing a segfault
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 3 Jan 2018 18:48:52 +0000 (18:48 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 3 Jan 2018 23:33:46 +0000 (15:33 -0800)
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>
bisect.c

index 3756f127b0fbaee3959011dbcd2beebbf067c5af..87e4dee16d712bdb85a7133d00f87cd421945d08 100644 (file)
--- 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;