# HG changeset patch # User Roy Marples # Date 1607811174 0 # Node ID f0957b45f5474b6e16b1de132862d3ac7c5647e6 # Parent 3853222e97c748aee49645d319a37f5fd73450fa privsep: Fix Linux i386 for SECCOMP as it just uses socketcall Rather than accept(2), recv(2), etc..... which is horrible! Thanks to Steve Hirsch for testing. diff -r 3853222e97c7 -r f0957b45f547 src/privsep-linux.c --- a/src/privsep-linux.c Sat Dec 12 17:41:37 2020 +0000 +++ b/src/privsep-linux.c Sat Dec 12 22:12:54 2020 +0000 @@ -34,6 +34,7 @@ #include #include +#include #include #include @@ -311,6 +312,23 @@ #ifdef __NR_sendto SECCOMP_ALLOW(__NR_sendto), #endif +#ifdef __NR_socketcall + /* i386 needs this and demonstrates why SECCOMP + * is poor compared to OpenBSD pledge(2) and FreeBSD capsicum(4) + * as this is soooo tied to the kernel API which changes per arch + * and likely libc as well. */ + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_ACCEPT), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_ACCEPT4), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_LISTEN), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_GETSOCKOPT), /* overflow */ + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECV), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECVFROM), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECVMSG), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SEND), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SENDMSG), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SENDTO), + SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SHUTDOWN), +#endif #ifdef __NR_shutdown SECCOMP_ALLOW(__NR_shutdown), #endif