From 45d4bdae5906cfe6b7cb1ba1cec82fd80381e07e Mon Sep 17 00:00:00 2001 From: Jeff King Date: Mon, 25 Mar 2013 16:16:50 -0400 Subject: [PATCH] stream_blob_to_fd: detect errors reading from stream We call read_istream, but never check its return value for errors. This can lead to us looping infinitely, as we just keep trying to write "-1" bytes (and we do not notice the error, as we simply check that write_in_full reports the same number of bytes we fed it, which of course is also -1). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- streaming.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/streaming.c b/streaming.c index 4d978e54e4..f4126a7da5 100644 --- a/streaming.c +++ b/streaming.c @@ -514,6 +514,8 @@ int stream_blob_to_fd(int fd, unsigned const char *sha1, struct stream_filter *f ssize_t wrote, holeto; ssize_t readlen = read_istream(st, buf, sizeof(buf)); + if (readlen < 0) + goto close_and_exit; if (!readlen) break; if (can_seek && sizeof(buf) == readlen) {