]> code.ossystems Code Review - openembedded-core.git/blob
b79d5f04ceffb20cefc27e994e81e2ce96a428c9
[openembedded-core.git] /
1 From 12cdb2be46e25e1ab99df18324b787ad8749dff7 Mon Sep 17 00:00:00 2001
2 From: Roy Marples <roy@marples.name>
3 Date: Sat, 12 Dec 2020 22:12:54 +0000
4 Subject: [PATCH] privsep: Fix Linux i386 for SECCOMP as it just uses
5  socketcall
6
7 Rather than accept(2), recv(2), etc..... which is horrible!
8
9 Thanks to Steve Hirsch <stevehirsch49@msn.com> for testing.
10
11 Upstream-Status: Backport
12 [https://roy.marples.name/cgit/dhcpcd.git/commit/?id=12cdb2be46e25e1ab99df18324b787ad8749dff7]
13
14 Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
15 ---
16  src/privsep-linux.c | 18 ++++++++++++++++++
17  1 file changed, 18 insertions(+)
18
19 diff --git a/src/privsep-linux.c b/src/privsep-linux.c
20 index 050a30cf..d31d720d 100644
21 --- a/src/privsep-linux.c
22 +++ b/src/privsep-linux.c
23 @@ -34,6 +34,7 @@
24  
25  #include <linux/audit.h>
26  #include <linux/filter.h>
27 +#include <linux/net.h>
28  #include <linux/seccomp.h>
29  #include <linux/sockios.h>
30  
31 @@ -311,6 +312,23 @@ static struct sock_filter ps_seccomp_filter[] = {
32  #ifdef __NR_sendto
33         SECCOMP_ALLOW(__NR_sendto),
34  #endif
35 +#ifdef __NR_socketcall
36 +       /* i386 needs this and demonstrates why SECCOMP
37 +        * is poor compared to OpenBSD pledge(2) and FreeBSD capsicum(4)
38 +        * as this is soooo tied to the kernel API which changes per arch
39 +        * and likely libc as well. */
40 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_ACCEPT),
41 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_ACCEPT4),
42 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_LISTEN),
43 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_GETSOCKOPT),  /* overflow */
44 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECV),
45 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECVFROM),
46 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECVMSG),
47 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SEND),
48 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SENDMSG),
49 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SENDTO),
50 +       SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SHUTDOWN),
51 +#endif
52  #ifdef __NR_shutdown
53         SECCOMP_ALLOW(__NR_shutdown),
54  #endif
55 -- 
56 2.25.1
57