diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-02-23T13·41+0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-02-23T14·54+0100 |
commit | 15d2d3c34e454fb7795998a3a2d73010dfbdec38 (patch) | |
tree | 677224a9270e2f70112f58ab7adf8956c293e8fc /src/libexpr/parser.y | |
parent | 47bdc52c1bf7bcec0ea1b685cf4c22b6b93be06d (diff) |
Add restricted evaluation mode
If ‘--option restrict-eval true’ is given, the evaluator will throw an exception if an attempt is made to access any file outside of the Nix search path. This is primarily intended for Hydra, where we don't want people doing ‘builtins.readFile ~/.ssh/id_dsa’ or stuff like that.
Diffstat (limited to 'src/libexpr/parser.y')
-rw-r--r-- | src/libexpr/parser.y | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index d70d29be8ba7..664d6692f51e 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -614,7 +614,8 @@ void EvalState::addToSearchPath(const string & s, bool warn) path = absPath(path); if (pathExists(path)) { debug(format("adding path ‘%1%’ to the search path") % path); - searchPath.push_back(std::pair<string, Path>(prefix, path)); + /* Resolve symlinks in the path to support restricted mode. */ + searchPath.push_back(std::pair<string, Path>(prefix, canonPath(path, true))); } else if (warn) printMsg(lvlError, format("warning: Nix search path entry ‘%1%’ does not exist, ignoring") % path); } |