Blame


1 dafb57b8 2021-01-15 op #include "gmid.h"
2 dafb57b8 2021-01-15 op
3 dafb57b8 2021-01-15 op #if defined(__FreeBSD__)
4 dafb57b8 2021-01-15 op
5 dafb57b8 2021-01-15 op #include <sys/capsicum.h>
6 dafb57b8 2021-01-15 op #include <err.h>
7 dafb57b8 2021-01-15 op
8 dafb57b8 2021-01-15 op void
9 dafb57b8 2021-01-15 op sandbox()
10 dafb57b8 2021-01-15 op {
11 dafb57b8 2021-01-15 op struct vhost *h;
12 dafb57b8 2021-01-15 op int has_cgi = 0;
13 dafb57b8 2021-01-15 op
14 dafb57b8 2021-01-15 op for (h = hosts; h->domain != NULL; ++h)
15 dafb57b8 2021-01-15 op if (h->cgi != NULL)
16 dafb57b8 2021-01-15 op has_cgi = 1;
17 dafb57b8 2021-01-15 op
18 dafb57b8 2021-01-15 op if (cap_enter() == -1)
19 dafb57b8 2021-01-15 op err(1, "cap_enter");
20 dafb57b8 2021-01-15 op }
21 dafb57b8 2021-01-15 op
22 dafb57b8 2021-01-15 op #elif defined(__linux__)
23 dafb57b8 2021-01-15 op
24 dafb57b8 2021-01-15 op void
25 dafb57b8 2021-01-15 op sandbox()
26 dafb57b8 2021-01-15 op {
27 dafb57b8 2021-01-15 op /* TODO: seccomp */
28 dafb57b8 2021-01-15 op }
29 dafb57b8 2021-01-15 op
30 dafb57b8 2021-01-15 op #elif defined(__OpenBSD__)
31 dafb57b8 2021-01-15 op
32 dafb57b8 2021-01-15 op #include <err.h>
33 dafb57b8 2021-01-15 op #include <unistd.h>
34 dafb57b8 2021-01-15 op
35 dafb57b8 2021-01-15 op void
36 dafb57b8 2021-01-15 op sandbox()
37 dafb57b8 2021-01-15 op {
38 dafb57b8 2021-01-15 op struct vhost *h;
39 dafb57b8 2021-01-15 op
40 dafb57b8 2021-01-15 op for (h = hosts; h->domain != NULL; ++h) {
41 dafb57b8 2021-01-15 op if (unveil(h->dir, "rx") == -1)
42 dafb57b8 2021-01-15 op err(1, "unveil %s for domain %s", h->dir, h->domain);
43 dafb57b8 2021-01-15 op }
44 dafb57b8 2021-01-15 op
45 881a9dd9 2021-01-16 op if (pledge("stdio recvfd rpath inet", NULL) == -1)
46 dafb57b8 2021-01-15 op err(1, "pledge");
47 dafb57b8 2021-01-15 op }
48 dafb57b8 2021-01-15 op
49 dafb57b8 2021-01-15 op #else
50 dafb57b8 2021-01-15 op
51 dafb57b8 2021-01-15 op void
52 dafb57b8 2021-01-15 op sandbox()
53 dafb57b8 2021-01-15 op {
54 dafb57b8 2021-01-15 op LOGN(NULL, "%s", "no sandbox method known for this OS");
55 dafb57b8 2021-01-15 op }
56 dafb57b8 2021-01-15 op
57 dafb57b8 2021-01-15 op #endif