Support empty hash in fetchers
fetchTarball, fetchTree, and fetchGit all have *optional* hash attrs. This means that we need to be careful with what we allow to avoid accidentally making these defaults. When ‘hash = ""’ we assume the empty hash is wanted.
This commit is contained in:
@@ -102,9 +102,14 @@ static void fetch(EvalState & state, const Pos & pos, Value * * args, Value & v,
|
||||
string n(attr.name);
|
||||
if (n == "url")
|
||||
url = state.forceStringNoCtx(*attr.value, *attr.pos);
|
||||
else if (n == "sha256")
|
||||
expectedHash = Hash(state.forceStringNoCtx(*attr.value, *attr.pos), htSHA256);
|
||||
else if (n == "name")
|
||||
else if (n == "sha256") {
|
||||
auto hashStr = state.forceStringNoCtx(*attr.value, *attr.pos);
|
||||
if (hashStr == "") {
|
||||
expectedHash = Hash(htSHA256);
|
||||
printError("warning: found empty hash, assuming you wanted '%s'", expectedHash->to_string());
|
||||
} else
|
||||
expectedHash = Hash(hashStr, htSHA256);
|
||||
} else if (n == "name")
|
||||
name = state.forceStringNoCtx(*attr.value, *attr.pos);
|
||||
else
|
||||
throw EvalError("unsupported argument '%s' to '%s', at %s",
|
||||
|
||||
Reference in New Issue
Block a user