]> git.ipfire.org Git - thirdparty/git.git/commit - commit-reach.c
commit-reach: properly peel tags
authorDerrick Stolee <dstolee@microsoft.com>
Fri, 21 Sep 2018 15:05:26 +0000 (08:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Sep 2018 18:36:27 +0000 (11:36 -0700)
commitb67f6b26e354813d8cd792dcb3eb1a1b60b98a08
tree36cb1a253063e6a0c6dc24688532ae9c251f2e96
parent6621c838743812aaba96e55cfec8524ea1144c2d
commit-reach: properly peel tags

The can_all_from_reach_with_flag() algorithm was refactored in 4fbcca4e
"commit-reach: make can_all_from_reach... linear" but incorrectly
assumed that all objects provided were commits. During a fetch
negotiation, ok_to_give_up() in upload-pack.c may provide unpeeled tags
to the 'from' array. The current code creates a segfault.

Add a direct call to can_all_from_reach_with_flag() in 'test-tool reach'
and add a test in t6600-test-reach.sh that demonstrates this segfault.

Correct the issue by peeling tags when investigating the initial list
of objects in the 'from' array.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-reach.c
t/helper/test-reach.c
t/t6600-test-reach.sh