]> git.ipfire.org Git - thirdparty/git.git/commit
list-objects: handle NULL function pointers
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 9 Mar 2022 16:01:38 +0000 (16:01 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 9 Mar 2022 18:25:27 +0000 (10:25 -0800)
commit4f33a6345f2bd6e47253d1dbefd01874d895ab2e
tree4d0d23fbf380aabd8f2af4e835ba174f41b3b6fb
parentf0d2f84919885d4dfb940e79a8e340bd2ad1887d
list-objects: handle NULL function pointers

If a caller to traverse_commit_list() specifies the options for the
--objects flag but does not specify a show_object function pointer, the
result is a segfault. This is currently visible by running 'git bundle
create --objects HEAD'.

We could fix this problem by supplying a no-op callback in
builtin/bundle.c, but that only solves the problem for one builtin,
leaving this segfault open for other callers.

Replace all callers of the show_commit and show_object function pointers
in list-objects.c to call helper functions show_commit() and
show_object() which check that the given context has non-NULL functions
before passing the necessary data. One extra benefit is that it reduces
duplication due to passing ctx->show_data to every caller.

Test that this segfault no longer occurs for 'git bundle'.

Co-authored-by: Derrick Stolee <derrickstolee@github.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Derrick Stolee <derrickstolee@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
bundle.c
list-objects.c
t/t6020-bundle-misc.sh