Extend size of sig{en,de}queue payload.

This commit is contained in:
4lDO2
2024-08-01 19:14:49 +02:00
parent 54b1fbe453
commit 7def7ce6e3
3 changed files with 17 additions and 14 deletions
+11 -3
View File
@@ -6,7 +6,7 @@ extern crate syscall;
use core::mem::size_of;
use syscall::{dirent::DirentHeader, RwFlags, EINVAL, SIGKILL};
use syscall::{dirent::DirentHeader, RtSigInfo, RwFlags, EINVAL, SIGKILL};
pub use self::syscall::{
data, error, flag, io, number, ptrace_event, EnvRegisters, FloatRegisters, IntRegisters,
@@ -201,8 +201,16 @@ pub fn syscall(
SYS_EXIT => exit(b),
SYS_KILL => kill(ProcessId::from(b), c, KillMode::Idempotent),
SYS_SIGENQUEUE => kill(ProcessId::from(b), c, KillMode::Queued(d)),
SYS_SIGDEQUEUE => sigdequeue(UserSlice::wo(b, 8)?, c as u32).map(|()| 0),
SYS_SIGENQUEUE => kill(
ProcessId::from(b),
c,
KillMode::Queued(unsafe {
UserSlice::ro(d, size_of::<RtSigInfo>())?.read_exact()?
}),
),
SYS_SIGDEQUEUE => {
sigdequeue(UserSlice::wo(b, size_of::<RtSigInfo>())?, c as u32).map(|()| 0)
}
SYS_WAITPID => waitpid(
ProcessId::from(b),
if c == 0 {