From: Michael Tremer Date: Wed, 1 Nov 2023 15:51:13 +0000 (+0000) Subject: jail: Correctly initialize any log file descriptors X-Git-Tag: 0.9.30~1335 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4c3bab92add83c3f47bcc646d78e103ae176d020;p=pakfire.git jail: Correctly initialize any log file descriptors Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/jail.c b/src/libpakfire/jail.c index 86b85229a..b13ff205a 100644 --- a/src/libpakfire/jail.c +++ b/src/libpakfire/jail.c @@ -582,7 +582,7 @@ static void pakfire_jail_log_redirect(void* data, int priority, const char* file } // Send the log message - if (fd) + if (fd >= 0) vdprintf(fd, format, args); } @@ -724,13 +724,16 @@ static int pakfire_jail_get_pipe_to_read(struct pakfire_jail* jail, int (*fds)[2 int* fd_write = &(*fds)[1]; // Close the write end of the pipe - if (*fd_write) { + if (*fd_write >= 0) { close(*fd_write); *fd_write = -1; } // Return the read end - return *fd_read; + if (*fd_read >= 0) + return *fd_read; + + return -1; } static int pakfire_jail_get_pipe_to_write(struct pakfire_jail* jail, int (*fds)[2]) { @@ -739,13 +742,16 @@ static int pakfire_jail_get_pipe_to_write(struct pakfire_jail* jail, int (*fds)[ int* fd_write = &(*fds)[1]; // Close the read end of the pipe - if (*fd_read) { + if (*fd_read >= 0) { close(*fd_read); *fd_read = -1; } // Return the write end - return *fd_write; + if (*fd_write >= 0) + return *fd_write; + + return -1; } static int pakfire_jail_log(struct pakfire* pakfire, void* data, int priority, @@ -1868,9 +1874,12 @@ static int __pakfire_jail_exec(struct pakfire_jail* jail, const char* argv[], .flags = flags, .pipes = { - .stdin = { -1, -1 }, - .stdout = { -1, -1 }, - .stderr = { -1, -1 }, + .stdin = { -1, -1 }, + .stdout = { -1, -1 }, + .stderr = { -1, -1 }, + .log_INFO = { -1, -1 }, + .log_ERROR = { -1, -1 }, + .log_DEBUG = { -1, -1 }, }, .communicate = {