Mercurial > hg > dhcpcd
changeset 5562:f0957b45f547 draft
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 <stevehirsch49@msn.com> for testing.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Sat, 12 Dec 2020 22:12:54 +0000 |
| parents | 3853222e97c7 |
| children | dd1e6f7adadd |
| files | src/privsep-linux.c |
| diffstat | 1 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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 <linux/audit.h> #include <linux/filter.h> +#include <linux/net.h> #include <linux/seccomp.h> #include <linux/sockios.h> @@ -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
