send-pack: segfault fix on forced push

When pushing to overwrite a ref that points at a commit we do
not even have, the recent "terse push" patch tried to get a
unique abbreviation for the non-existent (from our point of
view) object, which resulted in strcpy(buf, NULL) and
segfaulted.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2007-11-08 01:38:12 -08:00
parent b50fa2bd06
commit 6738c81942
2 changed files with 45 additions and 2 deletions

View File

@ -365,8 +365,9 @@ static int do_send_pack(int in, int out, struct remote *remote, const char *dest
char quickref[83];
char type = ' ';
const char *msg = "";
strcpy(quickref, find_unique_abbrev(ref->old_sha1, DEFAULT_ABBREV));
const char *old_abb;
old_abb = find_unique_abbrev(ref->old_sha1, DEFAULT_ABBREV);
strcpy(quickref, old_abb ? old_abb : old_hex);
if (ref_newer(ref->peer_ref->new_sha1, ref->old_sha1))
strcat(quickref, "..");
else {