Fix panic if user input invalid memory arguments

This commit is contained in:
Hui, Chunyang 2021-12-30 06:26:54 +00:00 committed by Zongmin.Gu
parent 9d55882cd5
commit 1229de1fd1
3 changed files with 4 additions and 4 deletions

@ -48,7 +48,7 @@ impl VMFreeSpaceManager {
if free_range.size() < size { if free_range.size() < size {
continue; continue;
} }
unsafe { VMRange::from_unchecked(free_range.start(), free_range.end()) } free_range.clone()
}; };
match addr { match addr {

@ -29,7 +29,7 @@ impl UserSpaceVMManager {
"allocated rsrv addr is 0x{:x}, len is 0x{:x}", "allocated rsrv addr is 0x{:x}, len is 0x{:x}",
addr, rsrv_mem_size addr, rsrv_mem_size
); );
VMRange::from_unchecked(addr, addr + rsrv_mem_size) VMRange::new(addr, addr + rsrv_mem_size)?
}; };
let vm_manager = VMManager::init(vm_range)?; let vm_manager = VMManager::init(vm_range)?;

@ -74,14 +74,14 @@ impl VMManager {
match addr { match addr {
VMMapAddr::Any => {} VMMapAddr::Any => {}
VMMapAddr::Hint(addr) => { VMMapAddr::Hint(addr) => {
let target_range = unsafe { VMRange::from_unchecked(addr, addr + size) }; let target_range = VMRange::new(addr, addr + size)?;
let ret = self.mmap_with_addr(target_range, options); let ret = self.mmap_with_addr(target_range, options);
if ret.is_ok() { if ret.is_ok() {
return ret; return ret;
} }
} }
VMMapAddr::Need(addr) | VMMapAddr::Force(addr) => { VMMapAddr::Need(addr) | VMMapAddr::Force(addr) => {
let target_range = unsafe { VMRange::from_unchecked(addr, addr + size) }; let target_range = VMRange::new(addr, addr + size)?;
return self.mmap_with_addr(target_range, options); return self.mmap_with_addr(target_range, options);
} }
} }