about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKlemens Nanni <klemens@posteo.de>2021-06-06 00:20:52 +0000
committerJune McEnroe <june@causal.agency>2021-06-06 10:18:52 -0400
commit0fe004c5c499b7daf76f4ac769025b5395d41220 (patch)
tree093826721ca372b63a09349badf92dacdd5d37dc
parentNickname defaults to system's username not IRC username (diff)
downloadcatgirl-0fe004c5c499b7daf76f4ac769025b5395d41220.tar.gz
catgirl-0fe004c5c499b7daf76f4ac769025b5395d41220.zip
OpenBSD: unveil XDG directories only when needed
The (not perfectly obvious) way catgirl crafts directories gets triggered
by unveilAll() even if no passed option requires filesystem access:

	$ env -i TERM=xterm ./catgirl -h irc.hackint.eu -R -n nobody
	catgirl: HOME unset

Here unveil(2) is used due to the "restrict" option, but besides terminfo(5)
and certificates catgirl does not need any other files, yet it tries to init
the data path -- passing XDG_DATA_HOME=/var/empty makes above invocation work
showing how the then successful path setup is not required.

Fix this by not unveiling the unneeded data path in the first place.
-rw-r--r--chat.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/chat.c b/chat.c
index 23ad335..e5527ac 100644
--- a/chat.c
+++ b/chat.c
@@ -145,8 +145,10 @@ static void unveilData(const char *name) {
 }
 
 static void unveilAll(const char *trust, const char *cert, const char *priv) {
-	dataMkdir("");
-	unveilData("");
+	if (save || logEnable) {
+		dataMkdir("");
+		unveilData("");
+	}
 	if (trust) unveilConfig(trust);
 	if (cert) unveilConfig(cert);
 	if (priv) unveilConfig(priv);
ollow=1'>Reimplement text macrosJune McEnroe 2022-02-19Factor out input handling to input.cJune McEnroe 2022-02-19Factor out window management to window.cJune McEnroe 2022-02-19Enable -Wmissing-prototypesJune McEnroe 2022-02-19Fix edit.[ch] license notice additional permissionsJune McEnroe 2022-02-19Run line editing testsJune McEnroe 2022-02-18Implement new line editing "library"June McEnroe 2022-02-18Simplify cursor positioning in inputJune McEnroe 2022-02-18Fix M-f orderingJune McEnroe 2022-02-12Move sandman build to scripts/MakefileJune McEnroe 2022-02-12Use compat_readpassphrase.c on LinuxJune McEnroe 2022-02-12Copy RPP defines from oconfigureJune McEnroe