mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-06-04 11:00:56 +00:00
conf: remove fgets() from run_buffer()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
e613d684fa
commit
ebf3a6af23
@ -307,7 +307,7 @@ static struct limit_opt limit_opt[] = {
|
||||
static int run_buffer(char *buffer)
|
||||
{
|
||||
__do_free char *output = NULL;
|
||||
int ret;
|
||||
int fd, ret;
|
||||
struct lxc_popen_FILE *f;
|
||||
|
||||
f = lxc_popen(buffer);
|
||||
@ -323,8 +323,25 @@ static int run_buffer(char *buffer)
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (fgets(output, LXC_LOG_BUFFER_SIZE, f->f))
|
||||
DEBUG("Script %s with output: %s", buffer, output);
|
||||
fd = fileno(f->f);
|
||||
if (fd < 0) {
|
||||
SYSERROR("Failed to retrieve underlying file descriptor");
|
||||
lxc_pclose(f);
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
ssize_t bytes_read;
|
||||
|
||||
bytes_read = lxc_read_nointr(fd, output, LXC_LOG_BUFFER_SIZE - 1);
|
||||
if (bytes_read > 0) {
|
||||
output[bytes_read] = '\0';
|
||||
DEBUG("Script %s produced output: %s", buffer, output);
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
ret = lxc_pclose(f);
|
||||
if (ret == -1) {
|
||||
|
@ -61,10 +61,10 @@ static inline int lxc_set_cloexec(int fd)
|
||||
return fcntl(fd, F_SETFD, FD_CLOEXEC);
|
||||
}
|
||||
|
||||
/* Struct to carry child pid from lxc_popen() to lxc_pclose().
|
||||
* Not an opaque struct to allow direct access to the underlying FILE *
|
||||
* (i.e., struct lxc_popen_FILE *file; fgets(buf, sizeof(buf), file->f))
|
||||
* without additional wrappers.
|
||||
/*
|
||||
* Struct to carry child pid from lxc_popen() to lxc_pclose(). Not an opaque
|
||||
* struct to allow direct access to the underlying FILE without additional
|
||||
* wrappers.
|
||||
*/
|
||||
struct lxc_popen_FILE {
|
||||
int pipe;
|
||||
|
Loading…
Reference in New Issue
Block a user