aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nix-worker/main.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/nix-worker/main.cc b/src/nix-worker/main.cc
index fef2c2958..cf550895e 100644
--- a/src/nix-worker/main.cc
+++ b/src/nix-worker/main.cc
@@ -164,6 +164,12 @@ void run(Strings args)
if (slave) {
FdSource source(STDIN_FILENO);
FdSink sink(STDOUT_FILENO);
+
+ /* This prevents us from receiving signals from the terminal
+ when we're running in setuid mode. */
+ if (setsid() == -1)
+ throw SysError(format("creating a new session"));
+
processConnection(source, sink);
}