[libos] Fix rt_sigaction wrong inargument
This commit is contained in:
parent
e9f2c09012
commit
2b1a9b960a
@ -14,9 +14,15 @@ pub fn do_rt_sigaction(
|
|||||||
signum_c: c_int,
|
signum_c: c_int,
|
||||||
new_sa_c: *const sigaction_t,
|
new_sa_c: *const sigaction_t,
|
||||||
old_sa_c: *mut sigaction_t,
|
old_sa_c: *mut sigaction_t,
|
||||||
|
sigset_size: size_t,
|
||||||
) -> Result<isize> {
|
) -> Result<isize> {
|
||||||
// C types -> Rust types
|
// C types -> Rust types
|
||||||
let signum = SigNum::from_u8(signum_c as u8)?;
|
let signum = SigNum::from_u8(signum_c as u8)?;
|
||||||
|
|
||||||
|
if sigset_size != std::mem::size_of::<sigset_t>() {
|
||||||
|
return_errno!(EINVAL, "unexpected sig action size");
|
||||||
|
}
|
||||||
|
|
||||||
let new_sa = {
|
let new_sa = {
|
||||||
if !new_sa_c.is_null() {
|
if !new_sa_c.is_null() {
|
||||||
let new_sa_c = unsafe { &*new_sa_c };
|
let new_sa_c = unsafe { &*new_sa_c };
|
||||||
|
@ -110,7 +110,7 @@ macro_rules! process_syscall_table_with_callback {
|
|||||||
(Mprotect = 10) => do_mprotect(addr: usize, len: usize, prot: u32),
|
(Mprotect = 10) => do_mprotect(addr: usize, len: usize, prot: u32),
|
||||||
(Munmap = 11) => do_munmap(addr: usize, size: usize),
|
(Munmap = 11) => do_munmap(addr: usize, size: usize),
|
||||||
(Brk = 12) => do_brk(new_brk_addr: usize),
|
(Brk = 12) => do_brk(new_brk_addr: usize),
|
||||||
(RtSigaction = 13) => do_rt_sigaction(signum_c: c_int, new_sa_c: *const sigaction_t, old_sa_c: *mut sigaction_t),
|
(RtSigaction = 13) => do_rt_sigaction(signum_c: c_int, new_sa_c: *const sigaction_t, old_sa_c: *mut sigaction_t, sigset_size: size_t),
|
||||||
(RtSigprocmask = 14) => do_rt_sigprocmask(how: c_int, set: *const sigset_t, oldset: *mut sigset_t, sigset_size: size_t),
|
(RtSigprocmask = 14) => do_rt_sigprocmask(how: c_int, set: *const sigset_t, oldset: *mut sigset_t, sigset_size: size_t),
|
||||||
(RtSigreturn = 15) => do_rt_sigreturn(context: *mut CpuContext),
|
(RtSigreturn = 15) => do_rt_sigreturn(context: *mut CpuContext),
|
||||||
(Ioctl = 16) => do_ioctl(fd: FileDesc, cmd: u32, argp: *mut u8),
|
(Ioctl = 16) => do_ioctl(fd: FileDesc, cmd: u32, argp: *mut u8),
|
||||||
|
Loading…
Reference in New Issue
Block a user