Fix Clippy warnings
This commit is contained in:
+52
-64
@@ -403,41 +403,35 @@ impl Linker {
|
||||
|
||||
// Protect pages
|
||||
for ph in elf.program_headers.iter() {
|
||||
match ph.p_type {
|
||||
program_header::PT_LOAD => {
|
||||
let voff = ph.p_vaddr as usize % PAGE_SIZE;
|
||||
let vaddr = ph.p_vaddr as usize - voff;
|
||||
let vsize =
|
||||
((ph.p_memsz as usize + voff + PAGE_SIZE - 1) / PAGE_SIZE) * PAGE_SIZE;
|
||||
if ph.p_type == program_header::PT_LOAD {
|
||||
let voff = ph.p_vaddr as usize % PAGE_SIZE;
|
||||
let vaddr = ph.p_vaddr as usize - voff;
|
||||
let vsize =
|
||||
((ph.p_memsz as usize + voff + PAGE_SIZE - 1) / PAGE_SIZE) * PAGE_SIZE;
|
||||
|
||||
let mut prot = 0;
|
||||
let mut prot = 0;
|
||||
|
||||
if ph.p_flags & program_header::PF_R == program_header::PF_R {
|
||||
prot |= sys_mman::PROT_READ;
|
||||
}
|
||||
|
||||
// W ^ X. If it is executable, do not allow it to be writable, even if requested
|
||||
if ph.p_flags & program_header::PF_X == program_header::PF_X {
|
||||
prot |= sys_mman::PROT_EXEC;
|
||||
} else if ph.p_flags & program_header::PF_W == program_header::PF_W {
|
||||
prot |= sys_mman::PROT_WRITE;
|
||||
}
|
||||
|
||||
let res = unsafe {
|
||||
let ptr = mmap.as_mut_ptr().add(vaddr);
|
||||
println!(" prot {:#x}, {:#x}: {:p}, {:#x}", vaddr, vsize, ptr, prot);
|
||||
|
||||
sys_mman::mprotect(ptr as *mut c_void, vsize, prot)
|
||||
};
|
||||
|
||||
if res < 0 {
|
||||
return Err(Error::Malformed(format!(
|
||||
"failed to mprotect {}",
|
||||
elf_name
|
||||
)));
|
||||
}
|
||||
if ph.p_flags & program_header::PF_R == program_header::PF_R {
|
||||
prot |= sys_mman::PROT_READ;
|
||||
}
|
||||
|
||||
// W ^ X. If it is executable, do not allow it to be writable, even if requested
|
||||
if ph.p_flags & program_header::PF_X == program_header::PF_X {
|
||||
prot |= sys_mman::PROT_EXEC;
|
||||
} else if ph.p_flags & program_header::PF_W == program_header::PF_W {
|
||||
prot |= sys_mman::PROT_WRITE;
|
||||
}
|
||||
|
||||
let res = unsafe {
|
||||
let ptr = mmap.as_mut_ptr().add(vaddr);
|
||||
println!(" prot {:#x}, {:#x}: {:p}, {:#x}", vaddr, vsize, ptr, prot);
|
||||
|
||||
sys_mman::mprotect(ptr as *mut c_void, vsize, prot)
|
||||
};
|
||||
|
||||
if res < 0 {
|
||||
return Err(Error::Malformed(format!("failed to mprotect {}", elf_name)));
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -497,41 +491,35 @@ impl Linker {
|
||||
|
||||
// Protect pages
|
||||
for ph in elf.program_headers.iter() {
|
||||
match ph.p_type {
|
||||
program_header::PT_LOAD => {
|
||||
let voff = ph.p_vaddr as usize % PAGE_SIZE;
|
||||
let vaddr = ph.p_vaddr as usize - voff;
|
||||
let vsize =
|
||||
((ph.p_memsz as usize + voff + PAGE_SIZE - 1) / PAGE_SIZE) * PAGE_SIZE;
|
||||
if let program_header::PT_LOAD = ph.p_type {
|
||||
let voff = ph.p_vaddr as usize % PAGE_SIZE;
|
||||
let vaddr = ph.p_vaddr as usize - voff;
|
||||
let vsize =
|
||||
((ph.p_memsz as usize + voff + PAGE_SIZE - 1) / PAGE_SIZE) * PAGE_SIZE;
|
||||
|
||||
let mut prot = 0;
|
||||
let mut prot = 0;
|
||||
|
||||
if ph.p_flags & program_header::PF_R == program_header::PF_R {
|
||||
prot |= sys_mman::PROT_READ;
|
||||
}
|
||||
|
||||
// W ^ X. If it is executable, do not allow it to be writable, even if requested
|
||||
if ph.p_flags & program_header::PF_X == program_header::PF_X {
|
||||
prot |= sys_mman::PROT_EXEC;
|
||||
} else if ph.p_flags & program_header::PF_W == program_header::PF_W {
|
||||
prot |= sys_mman::PROT_WRITE;
|
||||
}
|
||||
|
||||
let res = unsafe {
|
||||
let ptr = mmap.as_mut_ptr().add(vaddr);
|
||||
println!(" prot {:#x}, {:#x}: {:p}, {:#x}", vaddr, vsize, ptr, prot);
|
||||
|
||||
sys_mman::mprotect(ptr as *mut c_void, vsize, prot)
|
||||
};
|
||||
|
||||
if res < 0 {
|
||||
return Err(Error::Malformed(format!(
|
||||
"failed to mprotect {}",
|
||||
elf_name
|
||||
)));
|
||||
}
|
||||
if ph.p_flags & program_header::PF_R == program_header::PF_R {
|
||||
prot |= sys_mman::PROT_READ;
|
||||
}
|
||||
|
||||
// W ^ X. If it is executable, do not allow it to be writable, even if requested
|
||||
if ph.p_flags & program_header::PF_X == program_header::PF_X {
|
||||
prot |= sys_mman::PROT_EXEC;
|
||||
} else if ph.p_flags & program_header::PF_W == program_header::PF_W {
|
||||
prot |= sys_mman::PROT_WRITE;
|
||||
}
|
||||
|
||||
let res = unsafe {
|
||||
let ptr = mmap.as_mut_ptr().add(vaddr);
|
||||
println!(" prot {:#x}, {:#x}: {:p}, {:#x}", vaddr, vsize, ptr, prot);
|
||||
|
||||
sys_mman::mprotect(ptr as *mut c_void, vsize, prot)
|
||||
};
|
||||
|
||||
if res < 0 {
|
||||
return Err(Error::Malformed(format!("failed to mprotect {}", elf_name)));
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -59,9 +59,8 @@ pub extern "C" fn relibc_ld_so_start(sp: &'static mut Stack) -> usize {
|
||||
let mut parts = arg_str.splitn(2, '=');
|
||||
if let Some(key) = parts.next() {
|
||||
if let Some(value) = parts.next() {
|
||||
match key {
|
||||
"LD_LIBRARY_PATH" => library_path = value,
|
||||
_ => (),
|
||||
if let "LD_LIBRARY_PATH" = key {
|
||||
library_path = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ impl Tcb {
|
||||
Self {
|
||||
tls_end: tls.as_mut_ptr().add(tls.len()),
|
||||
tls_len: tls.len(),
|
||||
tcb_ptr: tcb_ptr,
|
||||
tcb_ptr,
|
||||
tcb_len: tcb_page.len(),
|
||||
masters_ptr: ptr::null_mut(),
|
||||
masters_len: 0,
|
||||
|
||||
Reference in New Issue
Block a user