Skip to content

Commit

Permalink
libutil: don't save cwd fd, use path instead
Browse files Browse the repository at this point in the history
Saving the cwd fd didn't actually work well -- prior to this commit, the
following would happen:

    : ~/w/vc/nix ; doas outputs/out/bin/nix --experimental-features 'nix-command flakes' run nixpkgs#coreutils -- --coreutils-prog=pwd
    pwd: couldn't find directory entry in ‘../../../..’ with matching i-node
    : ~/w/vc/nix ; doas outputs/out/bin/nix --experimental-features 'nix-command flakes' develop -c pwd
    pwd: couldn't find directory entry in ‘../../../..’ with matching i-node
  • Loading branch information
cole-h committed Apr 4, 2022
1 parent 10b9c1b commit 56009b2
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions src/libutil/util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1709,13 +1709,11 @@ void restoreMountNamespace()
{
#if __linux__
try {
AutoCloseFD fdSavedCwd = open("/proc/self/cwd", O_RDONLY);
if (!fdSavedCwd) {
throw SysError("saving cwd");
}
auto savedCwd = absPath(".");

if (fdSavedMountNamespace && setns(fdSavedMountNamespace.get(), CLONE_NEWNS) == -1)
throw SysError("restoring parent mount namespace");
if (fdSavedCwd && fchdir(fdSavedCwd.get()) == -1) {
if (chdir(savedCwd.c_str()) == -1) {
throw SysError("restoring cwd");
}
} catch (Error & e) {
Expand Down

0 comments on commit 56009b2

Please sign in to comment.