diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-11-13T18·18+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-11-13T18·18+0000 |
commit | e2a70b7ec04db604e9eaadfa6446bd360473163a (patch) | |
tree | ae5929ad421d25040f1255136e064ae8fb41f535 /src/libstore/store.cc | |
parent | e40d4a5604a75540d94782d405dfff2000143f61 (diff) |
* Magic attribute `exportReferencesGraph' that allows the references
graph to be passed to a builder. This attribute should be a list of pairs [name1 path1 name2 path2 ...]. The references graph of each `pathN' will be stored in a text file `nameN' in the temporary build directory. The text files have the format used by `nix-store --register-validity'. However, the deriver fields are left empty. `exportReferencesGraph' is useful for builders that want to do something with the closure of a store path. Examples: the builders that make initrds and ISO images for NixOS. `exportReferencesGraph' is entirely pure. It's necessary because otherwise the only way for a builder to get this information would be to call `nix-store' directly, which is not allowed (though unfortunately possible).
Diffstat (limited to 'src/libstore/store.cc')
-rw-r--r-- | src/libstore/store.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libstore/store.cc b/src/libstore/store.cc index f8441af9cb42..e073d64adaff 100644 --- a/src/libstore/store.cc +++ b/src/libstore/store.cc @@ -259,6 +259,10 @@ Path toStorePath(const Path & path) void checkStoreName(const string & name) { string validChars = "+-._?="; + /* Disallow names starting with a dot for possible security + reasons (e.g., "." and ".."). */ + if (string(name, 0, 1) == ".") + throw Error(format("illegal name: `%1%'") % name); for (string::const_iterator i = name.begin(); i != name.end(); ++i) if (!((*i >= 'A' && *i <= 'Z') || (*i >= 'a' && *i <= 'z') || |