summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-11-01 19:00:51 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-11-01 19:01:09 +0100
commit7a0bf8027b93e7e3f4e6887c0d116f471629cacd (patch)
treeb989593988ed573a4d2ec5f6d27fc44890a920ce
parente3ff2872701d9f1d6f4f5223641092ec19c10a7a (diff)
downloadrebel-7a0bf8027b93e7e3f4e6887c0d116f471629cacd.tar
rebel-7a0bf8027b93e7e3f4e6887c0d116f471629cacd.zip
runner: set CLOEXEC on signalfd
-rw-r--r--crates/runner/src/lib.rs9
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),