about summary refs log tree commit diff stats
path: root/doc/build.md
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-04-18 18:30:53 +0200
committerbptato <nincsnevem662@gmail.com>2024-04-18 18:30:53 +0200
commit38db6ab5be80b255fe40df715adc3b5852875cdd (patch)
tree328eada3b571e475903be0df61c5abf09c022d8b /doc/build.md
parent5bb9542045ff6dbb6c357eb4dd0a7616dba33a9a (diff)
downloadchawan-38db6ab5be80b255fe40df715adc3b5852875cdd.tar.gz
sandbox: seccomp support on Linux
We use libseccomp, which is now a semi-mandatory dependency on Linux.
(You can still build without it, but only if you pass a scary long flag
to make.)

For this to work I had to disable getTimezoneOffset, which would
otherwise call localtime_r which in turn reads in some files from
/usr/share/zoneinfo.  To allow this we would have to give unrestricted
openat(2) access to buffer processes, which is unacceptable.

(Giving websites access to the local timezone is a fingerprinting vector
so if this ever gets fixed then it should be an opt-in config setting.)

This patch also includes misc fixes to buffer cloning, and fixes the
LIBEXECDIR override in the makefile so that it is actually useful.
Diffstat (limited to 'doc/build.md')
-rw-r--r--doc/build.md9
1 files changed, 8 insertions, 1 deletions
diff --git a/doc/build.md b/doc/build.md
index bb9f929d..3d337d82 100644
--- a/doc/build.md
+++ b/doc/build.md
@@ -37,9 +37,16 @@ also override them by setting an environment variable with the same name.
   man pages. The default setting expands to `/usr/local/share/man/man1`, etc.
 * `CURLLIBNAME`: Change the name of the libcurl shared object file.
 * `LIBEXECDIR`: Path to your libexec directory; by default, it is relative
-  to wherever the binary is placed when it is executed.<BR>
+  to wherever the binary is placed when it is executed. (i.e. after installation
+  it would resolve to `/usr/local/libexec`.) <BR>
   WARNING: Unlike other path names, this must be quoted if your path contains
   spaces!
+* `DANGER_DISABLE_SANDBOX`: Set it to 1 to disable OS-level sandboxing even
+  on systems where we have built-in sandboxing support. Note that this is
+  *not* taken from the environment variables; you must use it like
+  `make DANGER_DISABLE_SANDBOX=1`.<BR>
+  WARNING: as the name suggests, this is rarely an optimal solution to whatever
+  problem you are facing.
 
 ## Phony targets