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@xxxxxxxxxxxx> --- bundle.c | 2 +- t/t5704-bundle.sh | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletions(-) diff --git a/bundle.c b/bundle.c index 4742f27..ac9cc20 100644 --- a/bundle.c +++ b/bundle.c @@ -31,7 +31,7 @@ static int strbuf_readline_fd(struct strbuf *sb, int fd) while (1) { char ch; ssize_t len = xread(fd, &ch, 1); - if (len < 0) + if (len <= 0) return -1; strbuf_addch(sb, ch); if (ch == '\n') diff --git a/t/t5704-bundle.sh b/t/t5704-bundle.sh index 728ccd8..75ce5b8 100755 --- a/t/t5704-bundle.sh +++ b/t/t5704-bundle.sh @@ -53,4 +53,14 @@ test_expect_failure 'bundle --stdin <rev-list options>' ' ' +test_expect_success 'die if bundle file is empty' ' + + echo -n > empty-bundle + timeout 5 git fetch empty-bundle + ret=$? + [ $ret == 128 ] && return 0 + return $ret + +' + test_done -- 1.7.8.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html