mirror of
https://github.com/NixOS/nix.git
synced 2025-11-14 22:42:41 +01:00
Do some parsing of git hashes based on length.
Note that for Nix-native information we should *not* do length tricks, but instead always rely on an explicit algorithm. This hack should be only for foreign hash literals.
This commit is contained in:
parent
6da56d7ed4
commit
156061409a
6 changed files with 40 additions and 9 deletions
|
|
@ -1404,4 +1404,21 @@ bool isLegalRefName(const std::string & refName)
|
|||
return false;
|
||||
}
|
||||
|
||||
Hash parseGitHash(std::string_view hashStr)
|
||||
{
|
||||
HashAlgorithm algo;
|
||||
switch (hashStr.size()) {
|
||||
case 40:
|
||||
algo = HashAlgorithm::SHA1;
|
||||
break;
|
||||
case 64:
|
||||
algo = HashAlgorithm::SHA256;
|
||||
break;
|
||||
default:
|
||||
throw Error(
|
||||
"invalid git hash '%s': expected 40 (SHA1) or 64 (SHA256) hex characters, got %d", hashStr, hashStr.size());
|
||||
}
|
||||
return Hash::parseNonSRIUnprefixed(hashStr, algo);
|
||||
}
|
||||
|
||||
} // namespace nix
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue