]> git.ozlabs.org Git - ccan/blobdiff - ccan/pipecmd/pipecmd.c
pipecmd: close fds in child.
[ccan] / ccan / pipecmd / pipecmd.c
index d45713b6f8015db478592f5795fdfda474605c3c..afeaf5a0a256de9839b39b522f0cc1e3e8f142a9 100644 (file)
@@ -137,6 +137,13 @@ pid_t pipecmdarr(int *fd_tochild, int *fd_fromchild, int *fd_errfromchild,
                                goto child_errno_fail;
                        close(errfromchild[1]);
                }
+
+               /* Make (fairly!) sure all other fds are closed. */
+               int max = sysconf(_SC_OPEN_MAX);
+               for (int i = 3; i < max; i++)
+                       if (i != execfail[1])
+                               close(i);
+
                execvp(arr[0], arr);
 
        child_errno_fail: