Browse Source

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
Clemens Buchacher 16 years ago committed by Junio C Hamano
parent
commit
6a01554e63
  1. 8
      builtin-remote.c
  2. 10
      t/t5505-remote.sh

8
builtin-remote.c

@ -299,11 +299,11 @@ static int get_push_ref_states(const struct ref *remote_refs, @@ -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);


10
t/t5505-remote.sh

@ -494,5 +494,15 @@ test_expect_success 'remote prune to cause a dangling symref' ' @@ -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


Loading…
Cancel
Save