mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
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.
This commit is contained in:
parent
b50408c143
commit
04cbfa4fae
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user