diff --git a/kernel/src/syscall/rt_sigaction.rs b/kernel/src/syscall/rt_sigaction.rs index 5703fbe7e..8a0b608f5 100644 --- a/kernel/src/syscall/rt_sigaction.rs +++ b/kernel/src/syscall/rt_sigaction.rs @@ -22,6 +22,10 @@ pub fn sys_rt_sigaction( sigset_size ); + if sigset_size != 8 { + return_errno_with_message!(Errno::EINVAL, "sigset size is not equal to 8"); + } + let mut sig_dispositions = ctx.process.sig_dispositions().lock(); let old_action = if sig_action_addr != 0 { diff --git a/kernel/src/syscall/rt_sigprocmask.rs b/kernel/src/syscall/rt_sigprocmask.rs index f7399edb1..62c1a9ba1 100644 --- a/kernel/src/syscall/rt_sigprocmask.rs +++ b/kernel/src/syscall/rt_sigprocmask.rs @@ -24,7 +24,7 @@ pub fn sys_rt_sigprocmask( mask_op, set_ptr, oldset_ptr, sigset_size ); if sigset_size != 8 { - error!("sigset size is not equal to 8"); + return_errno_with_message!(Errno::EINVAL, "sigset size is not equal to 8"); } do_rt_sigprocmask(mask_op, set_ptr, oldset_ptr, ctx)?; Ok(SyscallReturn::Return(0)) diff --git a/kernel/src/syscall/rt_sigsuspend.rs b/kernel/src/syscall/rt_sigsuspend.rs index 10a34089a..40043a539 100644 --- a/kernel/src/syscall/rt_sigsuspend.rs +++ b/kernel/src/syscall/rt_sigsuspend.rs @@ -22,7 +22,6 @@ pub fn sys_rt_sigsuspend( sigmask_addr, sigmask_size ); - debug_assert!(sigmask_size == core::mem::size_of::()); if sigmask_size != core::mem::size_of::() { return_errno_with_message!(Errno::EINVAL, "invalid sigmask size"); }