fix segfault showing an empty remote

In case of an empty list, the search for its tail caused a
NULL-pointer dereference.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Reported-by: Erik Faye-Lund <kusmabite@googlemail.com>
Acked-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Clemens Buchacher 2009-05-27 22:13:43 +02:00 committed by Junio C Hamano
parent e57cb01582
commit 6a01554e63
2 changed files with 14 additions and 4 deletions

View file

@ -299,11 +299,11 @@ static int get_push_ref_states(const struct ref *remote_refs,
return 0;
local_refs = get_local_heads();
ref = push_map = copy_ref_list(remote_refs);
while (ref->next)
ref = ref->next;
push_tail = &ref->next;
push_map = copy_ref_list(remote_refs);
push_tail = &push_map;
while (*push_tail)
push_tail = &((*push_tail)->next);
match_refs(local_refs, push_map, &push_tail, remote->push_refspec_nr,
remote->push_refspec, MATCH_REFS_NONE);

View file

@ -494,5 +494,15 @@ test_expect_success 'remote prune to cause a dangling symref' '
grep "dangling symref" err
'
test_expect_success 'show empty remote' '
test_create_repo empty &&
git clone empty empty-clone &&
(
cd empty-clone &&
git remote show origin
)
'
test_done