[libos] Fix rt_sigaction wrong inargument

This commit is contained in:
ClawSeven 2024-01-29 17:36:54 +08:00 committed by volcano
parent e9f2c09012
commit 2b1a9b960a
2 changed files with 7 additions and 1 deletions

@ -14,9 +14,15 @@ pub fn do_rt_sigaction(
signum_c: c_int,
new_sa_c: *const sigaction_t,
old_sa_c: *mut sigaction_t,
sigset_size: size_t,
) -> Result<isize> {
// C types -> Rust types
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 = {
if !new_sa_c.is_null() {
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),
(Munmap = 11) => do_munmap(addr: usize, size: 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),
(RtSigreturn = 15) => do_rt_sigreturn(context: *mut CpuContext),
(Ioctl = 16) => do_ioctl(fd: FileDesc, cmd: u32, argp: *mut u8),