about summary refs log tree commit diff stats
path: root/src/bindings
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-04-03 18:54:07 +0200
committerbptato <nincsnevem662@gmail.com>2024-04-03 19:08:34 +0200
commit5cf524958fc73d6912aef4866500b0cc46fa1bc6 (patch)
treeacc298fe143f5f9cfd9eff591fd52e5fb1e3866b /src/bindings
parentaf92dd1711181586a58843216e5fdd9c48876e59 (diff)
downloadchawan-5cf524958fc73d6912aef4866500b0cc46fa1bc6.tar.gz
sandbox: add OpenBSD pledge/unveil support
pledge is a bit more fine-grained than Capsicum's capability mode,
so the buffer & http ("network") sandboxes are now split up into
two parts.

I applied the same hack as in FreeBSD for overriding the buffer
selector kqueue, because a) I didn't want to request sysctl promise
b) I'm not sure if it would even work and c) if it breaks on OpenBSD,
then it's broken on FreeBSD too, so there's a greater chance of
discovering the bug.
Diffstat (limited to 'src/bindings')
-rw-r--r--src/bindings/pledge.nim6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/bindings/pledge.nim b/src/bindings/pledge.nim
new file mode 100644
index 00000000..8d265fe6
--- /dev/null
+++ b/src/bindings/pledge.nim
@@ -0,0 +1,6 @@
+{.push header: "<unistd.h>", importc.}
+
+proc pledge*(promises, execpromises: cstring): cint
+proc unveil*(path, permissions: cstring): cint
+
+{.pop.}
5d83586ebdf3644cf326af'>9ee17f1 ^
05649a5 ^
9ee17f1 ^



99273b6 ^

9ee17f1 ^





5b59ba3 ^

9ee17f1 ^
99273b6 ^
9ee17f1 ^







05649a5 ^
9ee17f1 ^







5b59ba3 ^




9ee17f1 ^


05649a5 ^

9ee17f1 ^



99273b6 ^
9ee17f1 ^
99273b6 ^

9ee17f1 ^






5b59ba3 ^
05649a5 ^
5b59ba3 ^









9ee17f1 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88