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
parent
f3f778df69
commit
54440e154f
4
bundle.c
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;
|
||||||
|
|
|
@ -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…
Reference in New Issue