diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-11-01 19:00:51 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-11-01 19:01:09 +0100 |
commit | 7a0bf8027b93e7e3f4e6887c0d116f471629cacd (patch) | |
tree | b989593988ed573a4d2ec5f6d27fc44890a920ce | |
parent | e3ff2872701d9f1d6f4f5223641092ec19c10a7a (diff) | |
download | rebel-7a0bf8027b93e7e3f4e6887c0d116f471629cacd.tar rebel-7a0bf8027b93e7e3f4e6887c0d116f471629cacd.zip |
runner: set CLOEXEC on signalfd
-rw-r--r-- | crates/runner/src/lib.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/crates/runner/src/lib.rs b/crates/runner/src/lib.rs index 9ca6c23..cfaf658 100644 --- a/crates/runner/src/lib.rs +++ b/crates/runner/src/lib.rs @@ -19,7 +19,11 @@ use nix::{ errno::Errno, poll, sched::CloneFlags, - sys::{signal, signalfd::SignalFd, stat, wait}, + sys::{ + signal, + signalfd::{SfdFlags, SignalFd}, + stat, wait, + }, unistd::{self, Gid, Pid, Uid}, }; use uds::UnixSeqpacketConn; @@ -113,7 +117,8 @@ fn runner(uid: Uid, gid: Gid, socket: UnixSeqpacketConn, _lockfile: File, option signals.add(signal::Signal::SIGCHLD); signal::pthread_sigmask(signal::SigmaskHow::SIG_BLOCK, Some(&signals), None) .expect("pthread_sigmask()"); - let mut sfd = SignalFd::new(&signals).expect("Failed to create signal file descriptor"); + let mut sfd = SignalFd::with_flags(&signals, SfdFlags::SFD_CLOEXEC) + .expect("Failed to create signal file descriptor"); let mut pollfds = [ poll::PollFd::new(sfd.as_raw_fd(), poll::PollFlags::POLLIN), |