in src/enclave_proc/resource_manager.rs [278:311]
fn fill_from_file(
&self,
file: &mut File,
region_offset: usize,
size: usize,
) -> NitroCliResult<()> {
let offset_plus_size = region_offset.checked_add(size).ok_or_else(|| {
new_nitro_cli_failure!(
"Memory overflow when writing EIF file to region",
NitroCliErrorEnum::MemoryOverflow
)
})?;
if offset_plus_size > self.mem_size as usize {
return Err(new_nitro_cli_failure!(
"Out of region",
NitroCliErrorEnum::MemoryOverflow
));
}
let bytes = unsafe {
std::slice::from_raw_parts_mut(self.mem_addr as *mut u8, self.mem_size as usize)
};
file.read_exact(&mut bytes[region_offset..region_offset + size])
.map_err(|e| {
new_nitro_cli_failure!(
&format!("Error while reading from enclave image: {:?}", e),
NitroCliErrorEnum::EifParsingError
)
})?;
Ok(())
}