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>maint
parent
e57cb01582
commit
6a01554e63
|
@ -299,11 +299,11 @@ static int get_push_ref_states(const struct ref *remote_refs,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
local_refs = get_local_heads();
|
local_refs = get_local_heads();
|
||||||
ref = push_map = copy_ref_list(remote_refs);
|
push_map = copy_ref_list(remote_refs);
|
||||||
while (ref->next)
|
|
||||||
ref = ref->next;
|
|
||||||
push_tail = &ref->next;
|
|
||||||
|
|
||||||
|
push_tail = &push_map;
|
||||||
|
while (*push_tail)
|
||||||
|
push_tail = &((*push_tail)->next);
|
||||||
match_refs(local_refs, push_map, &push_tail, remote->push_refspec_nr,
|
match_refs(local_refs, push_map, &push_tail, remote->push_refspec_nr,
|
||||||
remote->push_refspec, MATCH_REFS_NONE);
|
remote->push_refspec, MATCH_REFS_NONE);
|
||||||
|
|
||||||
|
|
|
@ -494,5 +494,15 @@ test_expect_success 'remote prune to cause a dangling symref' '
|
||||||
grep "dangling symref" err
|
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
|
test_done
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue