mirror of
https://github.com/NixOS/nix
synced 2025-07-02 21:51:50 +02:00
* Start of the setuid helper (the program that performs the operations
that have to be done as root: running builders under different uids, changing ownership of build results, and deleting paths in the store with the wrong ownership).
This commit is contained in:
parent
2b558843a2
commit
9f0efa6611
5 changed files with 18 additions and 4 deletions
|
@ -454,11 +454,12 @@ static void killUser(uid_t uid)
|
|||
if (kill(-1, SIGKILL) == 0) break;
|
||||
if (errno == ESRCH) break; /* no more processes */
|
||||
if (errno != EINTR)
|
||||
throw SysError(format("cannot kill processes for UID `%1%'") % uid);
|
||||
throw SysError(format("cannot kill processes for uid `%1%'") % uid);
|
||||
}
|
||||
|
||||
} catch (std::exception & e) {
|
||||
std::cerr << format("killing build users: %1%\n") % e.what();
|
||||
std::cerr << format("killing processes beloging to uid `%1%': %1%\n")
|
||||
% uid % e.what();
|
||||
quickExit(1);
|
||||
}
|
||||
quickExit(0);
|
||||
|
@ -466,7 +467,7 @@ static void killUser(uid_t uid)
|
|||
|
||||
/* parent */
|
||||
if (pid.wait(true) != 0)
|
||||
throw Error(format("cannot kill processes for UID `%1%'") % uid);
|
||||
throw Error(format("cannot kill processes for uid `%1%'") % uid);
|
||||
|
||||
/* !!! We should really do some check to make sure that there are
|
||||
no processes left running under `uid', but there is no portable
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue