in cas_object/src/cas_object_format.rs [1261:1281]
fn validate_cas_object_info(&self) -> Result<(), CasObjectError> {
if self.info.num_chunks == 0 {
return Err(CasObjectError::FormatError(anyhow!("Invalid CasObjectInfo, no chunks in CasObject.")));
}
if self.info.num_chunks != self.info.chunk_boundary_offsets.len() as u32
|| self.info.num_chunks != self.info.chunk_hashes.len() as u32
|| (self.info.boundaries_version == CAS_OBJECT_FORMAT_BOUNDARIES_VERSION
&& self.info.num_chunks != self.info.unpacked_chunk_offsets.len() as u32)
{
return Err(CasObjectError::FormatError(anyhow!(
"Invalid CasObjectInfo, num chunks not matching boundaries or hashes."
)));
}
if self.info.cashash == MerkleHash::default() {
return Err(CasObjectError::FormatError(anyhow!("Invalid CasObjectInfo, Missing cashash.")));
}
Ok(())
}