Only move fds from force_notify_fd if it is set!
authorDavin McCall <davmac@davmac.org>
Sat, 29 Jun 2019 05:34:07 +0000 (15:34 +1000)
committerDavin McCall <davmac@davmac.org>
Sat, 29 Jun 2019 05:34:07 +0000 (15:34 +1000)
src/run-child-proc.cc

index fdf475055d056411815ee599ac585861030a0e13..958f928fe3fd3a137ac93ac52c57ad33ffa9ebb4 100644 (file)
@@ -75,26 +75,26 @@ void base_process_service::run_child_proc(const char * const *args, const char *
 
     int minfd = (socket_fd == -1) ? 3 : 4;
 
-    // Move wpipefd/csfd/socket_fd to another fd if necessary:
-    if (wpipefd == force_notify_fd) {
-        if (move_reserved_fd(&wpipefd, minfd) == -1) {
-            goto failure_out;
+    if (force_notify_fd != -1) {
+        // Move wpipefd/csfd/socket_fd to another fd if necessary:
+        if (wpipefd == force_notify_fd) {
+            if (move_reserved_fd(&wpipefd, minfd) == -1) {
+                goto failure_out;
+            }
         }
-    }
-    if (csfd == force_notify_fd) {
-        if (move_reserved_fd(&csfd, minfd) == -1) {
-            goto failure_out;
+        if (csfd == force_notify_fd) {
+            if (move_reserved_fd(&csfd, minfd) == -1) {
+                goto failure_out;
+            }
         }
-    }
-    if (socket_fd == force_notify_fd) {
-        // Note that we might move this again later
-        if (move_reserved_fd(&socket_fd, 0) == -1) {
-            goto failure_out;
+        if (socket_fd == force_notify_fd) {
+            // Note that we might move this again later
+            if (move_reserved_fd(&socket_fd, 0) == -1) {
+                goto failure_out;
+            }
         }
-    }
 
-    // allocate the forced notification fd, if specified:
-    if (force_notify_fd != -1) {
+        // allocate the forced notification fd:
         if (notify_fd != force_notify_fd) {
             if (dup2(notify_fd, force_notify_fd) == -1) {
                 goto failure_out;