1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-07 01:51:47 +02:00

* Check against creation of GC roots in the store. Those roots don't

work, because findRoots() stops when it encounters a symlink to the
  store.  And of course the store is supposed to be read-only.
This commit is contained in:
Eelco Dolstra 2007-06-11 11:36:22 +00:00
parent f3ebd03bb1
commit 9bff7ad728
2 changed files with 7 additions and 3 deletions

View file

@ -97,6 +97,11 @@ Path addPermRoot(const Path & _storePath, const Path & _gcRoot,
Path gcRoot(canonPath(_gcRoot));
assertStorePath(storePath);
if (isInStore(gcRoot))
throw Error(format(
"creating a garbage collector root (%1%) in the Nix store is forbidden "
"(are you running nix-build inside the store?)") % gcRoot);
if (indirect) {
createSymlink(gcRoot, storePath, true);
store->addIndirectRoot(gcRoot);
@ -114,7 +119,6 @@ Path addPermRoot(const Path & _storePath, const Path & _gcRoot,
}
createSymlink(gcRoot, storePath, false);
}
/* Check that the root can be found by the garbage collector. */