Browse Source

fix hang in git fetch if pointed at a 0 length bundle

git-repo if interupted at the exact wrong time will generate zero
length bundles- literal empty files.  git-repo is wrong here, but
git fetch shouldn't effectively spin loop if pointed at a zero
length bundle.

Signed-off-by: Brian Harring <ferringb@chromium.org>
Helped-by: Johannes Sixt
Helped-by: Nguyen Thai Ngoc Duy
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Brian Harring 13 years ago committed by Junio C Hamano
parent
commit
54440e154f
  1. 4
      bundle.c
  2. 6
      t/t5704-bundle.sh

4
bundle.c

@ -31,8 +31,8 @@ static int strbuf_readline_fd(struct strbuf *sb, int fd)
while (1) { while (1) {
char ch; char ch;
ssize_t len = xread(fd, &ch, 1); ssize_t len = xread(fd, &ch, 1);
if (len < 0) if (len <= 0)
return -1; return len;
strbuf_addch(sb, ch); strbuf_addch(sb, ch);
if (ch == '\n') if (ch == '\n')
break; break;

6
t/t5704-bundle.sh

@ -53,4 +53,10 @@ test_expect_failure 'bundle --stdin <rev-list options>' '


' '


test_expect_success 'empty bundle file is rejected' '

>empty-bundle && test_must_fail git fetch empty-bundle

'

test_done test_done

Loading…
Cancel
Save