Fix load user program out of range

master
WangRunji 6 years ago
parent 06b39ed521
commit 6022ec8efc

@ -65,6 +65,9 @@ impl Context {
let virt_addr = ph.virtual_addr() as usize; let virt_addr = ph.virtual_addr() as usize;
let offset = ph.offset() as usize; let offset = ph.offset() as usize;
let file_size = ph.file_size() as usize; let file_size = ph.file_size() as usize;
if file_size == 0 {
return;
}
use core::slice; use core::slice;
let target = unsafe { slice::from_raw_parts_mut(virt_addr as *mut u8, file_size) }; let target = unsafe { slice::from_raw_parts_mut(virt_addr as *mut u8, file_size) };
target.copy_from_slice(&data[offset..offset + file_size]); target.copy_from_slice(&data[offset..offset + file_size]);
@ -117,7 +120,7 @@ impl Context {
impl Debug for Context { impl Debug for Context {
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
write!(f, "{:?}", self.arch) write!(f, "{:x?}", self.arch)
} }
} }

Loading…
Cancel
Save