feat(nix-compat/store_path): validate_name takes AsRef<[u8]>

Change-Id: I8819e2a7b63008a68f4f82035a08b960ac480dc3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9858
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
edef 2023-10-27 12:07:13 +00:00
parent b994f692d3
commit c19c6c23cb
2 changed files with 4 additions and 3 deletions

View file

@ -177,7 +177,9 @@ impl StorePath {
/// Checks a given &[u8] to match the restrictions for [StorePath::name], and
/// returns the name as string if successful.
pub(crate) fn validate_name(s: &[u8]) -> Result<&str, Error> {
pub(crate) fn validate_name(s: &(impl AsRef<[u8]> + ?Sized)) -> Result<&str, Error> {
let s = s.as_ref();
// Empty or excessively long names are not allowed.
if s.is_empty() || s.len() > 211 {
return Err(Error::InvalidLength());

View file

@ -166,8 +166,7 @@ fn build_store_path_from_fingerprint_parts<B: AsRef<[u8]>>(
hash: &NixHash,
name: B,
) -> Result<StorePath, Error> {
let name = name.as_ref();
let name = super::validate_name(name.as_ref())?.to_owned();
let name = super::validate_name(&name)?.to_owned();
let digest = compress_hash(&{
let mut h = Sha256::new();