in src/enclave_proc/resource_manager.rs [254:275]
fn free(&mut self) -> NitroCliResult<()> {
// Do nothing if the region has already been freed.
if self.mem_addr == 0 {
return Ok(());
}
let rc =
unsafe { libc::munmap(self.mem_addr as *mut libc::c_void, self.mem_size as usize) };
if rc < 0 {
return Err(new_nitro_cli_failure!(
"Failed to unmap memory",
NitroCliErrorEnum::EnclaveMunmapError
));
}
// Set the address and length to 0 to avoid double-freeing.
self.mem_addr = 0;
self.mem_size = 0;
Ok(())
}