From: Brian Harring Date: Tue, 3 Jan 2012 13:46:03 +0000 (-0800) Subject: fix hang in git fetch if pointed at a 0 length bundle X-Git-Tag: v1.7.8.3~6 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=54440e154f33678a80ea9f77085730b81a5e9446;p=git.git 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 Helped-by: Johannes Sixt Helped-by: Nguyen Thai Ngoc Duy Signed-off-by: Junio C Hamano --- diff --git a/bundle.c b/bundle.c index 08020bc3a..8a1d53ba2 100644 --- a/bundle.c +++ b/bundle.c @@ -31,8 +31,8 @@ static int strbuf_readline_fd(struct strbuf *sb, int fd) while (1) { char ch; ssize_t len = xread(fd, &ch, 1); - if (len < 0) - return -1; + if (len <= 0) + return len; strbuf_addch(sb, ch); if (ch == '\n') break; diff --git a/t/t5704-bundle.sh b/t/t5704-bundle.sh index 728ccd88c..4ae127d10 100755 --- a/t/t5704-bundle.sh +++ b/t/t5704-bundle.sh @@ -53,4 +53,10 @@ test_expect_failure 'bundle --stdin ' ' ' +test_expect_success 'empty bundle file is rejected' ' + + >empty-bundle && test_must_fail git fetch empty-bundle + +' + test_done