feat(tvix/store): parameterise validate_digest error
Similar to cl/7682, we also want to make that error configurable. Change-Id: I64f1a4570b3d75af4741abe10c2855959766e107 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7708 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
		
							parent
							
								
									5520bf3682
								
							
						
					
					
						commit
						4036740ca7
					
				
					 1 changed files with 7 additions and 4 deletions
				
			
		| 
						 | 
					@ -38,9 +38,9 @@ fn validate_node_name<E>(name: &str, err: fn(String) -> E) -> Result<(), E> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Checks a digest for validity.
 | 
					/// Checks a digest for validity.
 | 
				
			||||||
/// Digests are 32 bytes long, as we store blake3 digests.
 | 
					/// Digests are 32 bytes long, as we store blake3 digests.
 | 
				
			||||||
fn validate_digest(digest: &Vec<u8>) -> Result<(), ValidateDirectoryError> {
 | 
					fn validate_digest<E>(digest: &Vec<u8>, err: fn(usize) -> E) -> Result<(), E> {
 | 
				
			||||||
    if digest.len() != 32 {
 | 
					    if digest.len() != 32 {
 | 
				
			||||||
        return Err(ValidateDirectoryError::InvalidDigestLen(digest.len()));
 | 
					        return Err(err(digest.len()));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Ok(())
 | 
					    Ok(())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,10 @@ impl Directory {
 | 
				
			||||||
        // check directories
 | 
					        // check directories
 | 
				
			||||||
        for directory_node in &self.directories {
 | 
					        for directory_node in &self.directories {
 | 
				
			||||||
            validate_node_name(&directory_node.name, ValidateDirectoryError::InvalidName)?;
 | 
					            validate_node_name(&directory_node.name, ValidateDirectoryError::InvalidName)?;
 | 
				
			||||||
            validate_digest(&directory_node.digest)?;
 | 
					            validate_digest(
 | 
				
			||||||
 | 
					                &directory_node.digest,
 | 
				
			||||||
 | 
					                ValidateDirectoryError::InvalidDigestLen,
 | 
				
			||||||
 | 
					            )?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            update_if_lt_prev(&mut last_directory_name, directory_node.name.as_str())?;
 | 
					            update_if_lt_prev(&mut last_directory_name, directory_node.name.as_str())?;
 | 
				
			||||||
            insert_once(&mut seen_names, directory_node.name.as_str())?;
 | 
					            insert_once(&mut seen_names, directory_node.name.as_str())?;
 | 
				
			||||||
| 
						 | 
					@ -114,7 +117,7 @@ impl Directory {
 | 
				
			||||||
        // check files
 | 
					        // check files
 | 
				
			||||||
        for file_node in &self.files {
 | 
					        for file_node in &self.files {
 | 
				
			||||||
            validate_node_name(&file_node.name, ValidateDirectoryError::InvalidName)?;
 | 
					            validate_node_name(&file_node.name, ValidateDirectoryError::InvalidName)?;
 | 
				
			||||||
            validate_digest(&file_node.digest)?;
 | 
					            validate_digest(&file_node.digest, ValidateDirectoryError::InvalidDigestLen)?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            update_if_lt_prev(&mut last_file_name, file_node.name.as_str())?;
 | 
					            update_if_lt_prev(&mut last_file_name, file_node.name.as_str())?;
 | 
				
			||||||
            insert_once(&mut seen_names, file_node.name.as_str())?;
 | 
					            insert_once(&mut seen_names, file_node.name.as_str())?;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue