0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-03 09:56:38 -05:00

util: Add missing rseq to syscall sandbox

Fixes #24368.
This commit is contained in:
laanwj 2022-02-17 15:01:23 +01:00
parent 922c49a138
commit 6c4fd36089

View file

@ -68,6 +68,10 @@ bool g_syscall_sandbox_log_violation_before_terminating{false};
#define __NR_copy_file_range 326 #define __NR_copy_file_range 326
#endif #endif
#ifndef __NR_rseq
#define __NR_rseq 334
#endif
// This list of syscalls in LINUX_SYSCALLS is only used to map syscall numbers to syscall names in // This list of syscalls in LINUX_SYSCALLS is only used to map syscall numbers to syscall names in
// order to be able to print user friendly error messages which include the syscall name in addition // order to be able to print user friendly error messages which include the syscall name in addition
// to the syscall number. // to the syscall number.
@ -327,6 +331,7 @@ const std::map<uint32_t, std::string> LINUX_SYSCALLS{
{__NR_request_key, "request_key"}, {__NR_request_key, "request_key"},
{__NR_restart_syscall, "restart_syscall"}, {__NR_restart_syscall, "restart_syscall"},
{__NR_rmdir, "rmdir"}, {__NR_rmdir, "rmdir"},
{__NR_rseq, "rseq"},
{__NR_rt_sigaction, "rt_sigaction"}, {__NR_rt_sigaction, "rt_sigaction"},
{__NR_rt_sigpending, "rt_sigpending"}, {__NR_rt_sigpending, "rt_sigpending"},
{__NR_rt_sigprocmask, "rt_sigprocmask"}, {__NR_rt_sigprocmask, "rt_sigprocmask"},
@ -723,6 +728,7 @@ public:
allowed_syscalls.insert(__NR_fork); // create a child process allowed_syscalls.insert(__NR_fork); // create a child process
allowed_syscalls.insert(__NR_tgkill); // send a signal to a thread allowed_syscalls.insert(__NR_tgkill); // send a signal to a thread
allowed_syscalls.insert(__NR_wait4); // wait for process to change state, BSD style allowed_syscalls.insert(__NR_wait4); // wait for process to change state, BSD style
allowed_syscalls.insert(__NR_rseq); // register restartable sequence for thread
} }
void AllowScheduling() void AllowScheduling()