From 04cbfa4faeab330780145f764242914d89ac4b50 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Wed, 3 Nov 2010 08:43:43 +0100 Subject: [PATCH] Fix virPipeReadUntilEOF on more than 1024 bytes of data virPipeReadUntilEOF is used to read the stdout of exec'ed and this could fail to capture the full output and read only 1024 bytes. The problem is that this is based on a poll loop, and in the loop we read at most 1024 bytes per file descriptor, but we also note in the loop if poll indicates that the process won't output more than that on that fd by setting finished[i] = 1. The simplest way is that if we read a full buffer make sure finished[i] is still 0 because we will need another pass in the loop. --- src/util/util.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/util/util.c b/src/util/util.c index f7c7d3253c..a059675140 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -984,6 +984,9 @@ virPipeReadUntilEOF(int outfd, int errfd, got = read(fds[i].fd, data, sizeof(data)); + if (got == sizeof(data)) + finished[i] = 0; + if (got == 0) { finished[i] = 1; continue;