Jeff King <peff@xxxxxxxx> writes: > 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). Looks sane. Thanks. > > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > No test yet, as my method for triggering this causes _another_ infinite > loop. So the test comes after the fixes, to avoid infinite loops when > bisecting the history later. :) > > streaming.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/streaming.c b/streaming.c > index 4d978e5..f4126a7 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) { -- 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