]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
jail: Correctly initialize any log file descriptors
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 1 Nov 2023 15:51:13 +0000 (15:51 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 1 Nov 2023 15:51:13 +0000 (15:51 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/jail.c

index 86b85229a33160a3441f7b7e779a80382f50defd..b13ff205abdcb01e69a893c4c3344ac8b57e4a39 100644 (file)
@@ -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 = {