about summary refs log tree commit diff
path: root/chat.c
diff options
context:
space:
mode:
authorKlemens Nanni <klemens@posteo.de>2021-06-19 14:57:00 +0000
committerJune McEnroe <june@causal.agency>2021-06-20 20:21:00 -0400
commit3a38e36717ff24a3c028c1c7cfe477d9fec95498 (patch)
treea22ab9715396e65e95c332de4e2c58814ad9ab4e /chat.c
parentHandle "\1ACTION\1" empty actions (diff)
downloadcatgirl-3a38e36717ff24a3c028c1c7cfe477d9fec95498.tar.gz
catgirl-3a38e36717ff24a3c028c1c7cfe477d9fec95498.zip
OpenBSD: Only unveil used directories
dataMkdir() already picked the appropiate directory so make it
return that such that unveilData() can go as only that one directory
needs unveiling.
Diffstat (limited to 'chat.c')
-rw-r--r--chat.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/chat.c b/chat.c
index 8816068..479ec94 100644
--- a/chat.c
+++ b/chat.c
@@ -127,16 +127,6 @@ static void parseHash(char *str) {
 	if (*str) hashBound = strtoul(&str[1], NULL, 0);
 }
 
-#ifdef __OpenBSD__
-static void unveilData(const char *name) {
-	const char *dirs = NULL;
-	for (const char *path; NULL != (path = dataPath(&dirs, name));) {
-		int error = unveil(path, "wc");
-		if (error && errno != ENOENT) err(EX_CANTCREAT, "%s", path);
-	}
-}
-#endif
-
 static volatile sig_atomic_t signals[NSIG];
 static void signalHandler(int signal) {
 	signals[signal] = 1;
@@ -287,8 +277,9 @@ int main(int argc, char *argv[]) {
 
 #ifdef __OpenBSD__
 	if (self.restricted && logEnable) {
-		dataMkdir("");
-		unveilData("");
+		const char *logdir = dataMkdir("");
+		int error = unveil(logdir, "wc");
+		if (error) err(EX_OSERR, "unveil");
 	}
 
 	char promises[64] = "stdio tty";