diff --git a/qrexec-lib/exec.c b/qrexec-lib/exec.c index f0949bc..b6518f0 100644 --- a/qrexec-lib/exec.c +++ b/qrexec-lib/exec.c @@ -19,6 +19,8 @@ * */ +#include +#include #include #include #include @@ -49,8 +51,10 @@ void do_fork_exec(const char *cmdline, int *pid, int *stdin_fd, int *stdout_fd, { int inpipe[2], outpipe[2], errpipe[2]; - if (pipe(inpipe) || pipe(outpipe) || (stderr_fd && pipe(errpipe))) { - perror("pipe"); + if (socketpair(AF_UNIX, SOCK_STREAM, 0, inpipe) || + socketpair(AF_UNIX, SOCK_STREAM, 0, outpipe) || + (stderr_fd && socketpair(AF_UNIX, SOCK_STREAM, 0, errpipe))) { + perror("socketpair"); exit(1); } switch (*pid = fork()) {