commit 7d07d3b

shtrophic  ·  2024-12-08 07:48:44 +0000 UTC
parent 932a2cf
cleanup rules
1 files changed,  +29, -23
+29, -23
 1@@ -9,42 +9,48 @@
 2 #define LL_PRINTERR(fmt, ...) srv_debug(0, xs_fmt(fmt, __VA_ARGS__))
 3 #include "landloc.h"
 4 
 5-#define LL_R LANDLOCK_ACCESS_FS_READ_FILE
 6-#define LL_X LANDLOCK_ACCESS_FS_EXECUTE
 7-#define LL_RWCF (LL_R | LANDLOCK_ACCESS_FS_WRITE_FILE | LANDLOCK_ACCESS_FS_MAKE_REG | LANDLOCK_ACCESS_FS_TRUNCATE | LANDLOCK_ACCESS_FS_REMOVE_FILE | LANDLOCK_ACCESS_FS_REFER)
 8-#define LL_RWCD (LL_RWCF | LANDLOCK_ACCESS_FS_MAKE_DIR | LANDLOCK_ACCESS_FS_REMOVE_DIR)
 9-#define LL_UNIX (LL_R | LANDLOCK_ACCESS_FS_WRITE_FILE | LANDLOCK_ACCESS_FS_MAKE_SOCK)
10-#define LL_CONN LANDLOCK_ACCESS_NET_CONNECT_TCP
11-#define LL_BIND LANDLOCK_ACCESS_NET_BIND_TCP
12-
13 static
14 LL_BEGIN(sbox_enter_linux_, const char* basedir, const char *address, int smail) {
15 
16-    LL_PATH(basedir,                LL_RWCD);
17-    LL_PATH("/tmp",                 LL_RWCD);
18+    const unsigned long long
19+        r = LANDLOCK_ACCESS_FS_READ_DIR    |
20+            LANDLOCK_ACCESS_FS_READ_FILE,
21+        w = LANDLOCK_ACCESS_FS_WRITE_FILE  |
22+            LANDLOCK_ACCESS_FS_TRUNCATE,
23+        c = LANDLOCK_ACCESS_FS_MAKE_DIR    |
24+            LANDLOCK_ACCESS_FS_MAKE_REG    |
25+            LANDLOCK_ACCESS_FS_TRUNCATE    |
26+            LANDLOCK_ACCESS_FS_MAKE_SYM    |
27+            LANDLOCK_ACCESS_FS_REMOVE_DIR  |
28+            LANDLOCK_ACCESS_FS_REMOVE_FILE |
29+            LANDLOCK_ACCESS_FS_REFER,
30+        s = LANDLOCK_ACCESS_FS_MAKE_SOCK,
31+        x = LANDLOCK_ACCESS_FS_EXECUTE;
32+
33+    LL_PATH(basedir,                r|w|c);
34+    LL_PATH("/tmp",                 r|w|c);
35 #ifndef WITHOUT_SHM
36-    LL_PATH("/dev/shm",             LL_RWCF);
37+    LL_PATH("/dev/shm",             r|w|c);
38 #endif
39-    LL_PATH("/etc/resolv.conf",     LL_R  );
40-    LL_PATH("/etc/hosts",           LL_R  );
41-    LL_PATH("/etc/ssl/openssl.cnf", LL_R  );
42-    LL_PATH("/etc/ssl/cert.pem",    LL_R  );
43-    LL_PATH("/usr/share/zoneinfo",  LL_R  );
44+    LL_PATH("/etc/resolv.conf",     r    );
45+    LL_PATH("/etc/hosts",           r    );
46+    LL_PATH("/etc/ssl/openssl.cnf", r    );
47+    LL_PATH("/etc/ssl/cert.pem",    r    );
48+    LL_PATH("/usr/share/zoneinfo",  r    );
49 
50     if (*address == '/')
51-        LL_PATH(address, LL_UNIX);
52+        LL_PATH(address, s);
53 
54     if (smail)
55-        LL_PATH("/usr/sbin/sendmail", LL_X);
56-
57+        LL_PATH("/usr/sbin/sendmail", x);
58 
59     if (*address != '/') {
60-        LL_PORT(
61-            (unsigned short)xs_number_get(xs_dict_get(srv_config, "port")), LL_BIND);
62+        unsigned short listen_port = xs_number_get(xs_dict_get(srv_config, "port"));
63+        LL_PORT(listen_port, LANDLOCK_ACCESS_NET_BIND_TCP);
64     }
65 
66-    LL_PORT(80,  LL_CONN);
67-    LL_PORT(443, LL_CONN);
68+    LL_PORT(80,  LANDLOCK_ACCESS_NET_CONNECT_TCP);
69+    LL_PORT(443, LANDLOCK_ACCESS_NET_CONNECT_TCP);
70 
71 } LL_END
72