From 993e94cc764c79bda1dc64985813ea6c8c7f24b1 Mon Sep 17 00:00:00 2001 From: apio Date: Tue, 22 Aug 2023 13:34:30 +0200 Subject: [PATCH] kernel: Remove the 'signal' promise and make signal functions require stdio instead This follows OpenBSD and makes it so stdio is sufficient for an abort() call. --- kernel/src/Pledge.h | 2 +- kernel/src/sys/signal.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/src/Pledge.h b/kernel/src/Pledge.h index 8b9bdba0..f7ea264f 100644 --- a/kernel/src/Pledge.h +++ b/kernel/src/Pledge.h @@ -4,7 +4,7 @@ #define enumerate_promises(_p) \ _p(stdio) _p(rpath) _p(wpath) _p(cpath) _p(fattr) _p(chown) _p(unix) _p(tty) _p(proc) _p(exec) _p(prot_exec) \ - _p(id) _p(mount) _p(signal) _p(host) _p(error) + _p(id) _p(mount) _p(host) _p(error) enum class Promise { diff --git a/kernel/src/sys/signal.cpp b/kernel/src/sys/signal.cpp index 112cd458..8e3f139d 100644 --- a/kernel/src/sys/signal.cpp +++ b/kernel/src/sys/signal.cpp @@ -19,7 +19,7 @@ Result sys_sigreturn(Registers* regs, SyscallArgs) Result sys_sigaction(Registers*, SyscallArgs args) { auto* current = Scheduler::current(); - TRY(check_pledge(current, Promise::p_signal)); + TRY(check_pledge(current, Promise::p_stdio)); int signo = (int)args[0]; const struct sigaction* act = (const struct sigaction*)args[1]; @@ -71,7 +71,7 @@ Result sys_kill(Registers*, SyscallArgs args) Result sys_sigprocmask(Registers*, SyscallArgs args) { auto* current = Scheduler::current(); - TRY(check_pledge(current, Promise::p_signal)); + TRY(check_pledge(current, Promise::p_stdio)); int how = (int)args[0]; const sigset_t* set = (const sigset_t*)args[1];