diff --git a/server.c b/server.c index 42b7ec2b..217460a9 100644 --- a/server.c +++ b/server.c @@ -290,7 +290,7 @@ server_init(const struct config *conf, struct fdm *fdm, struct wayland *wayl) unlink(sock_path); - if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | FD_CLOEXEC) < 0) { + if (fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC) < 0) { LOG_ERRNO("failed to set FD_CLOEXEC on socket"); goto err; } diff --git a/slave.c b/slave.c index 1f70a0d8..cc41f39a 100644 --- a/slave.c +++ b/slave.c @@ -127,6 +127,15 @@ slave_spawn(int ptmx, int argc, char *const *argv, return -1; } else LOG_DBG("%s: successfully started", conf_shell); + + int fd_flags; + if ((fd_flags = fcntl(ptmx, F_GETFD)) < 0 || + fcntl(ptmx, F_SETFD, fd_flags | FD_CLOEXEC) < 0) + { + LOG_ERRNO("failed to set FD_CLOEXEC on ptmx"); + return -1; + } + break; } }