Fix panic if user input invalid memory arguments
This commit is contained in:
parent
9d55882cd5
commit
1229de1fd1
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user