From 3a38e36717ff24a3c028c1c7cfe477d9fec95498 Mon Sep 17 00:00:00 2001 From: Klemens Nanni Date: Sat, 19 Jun 2021 14:57:00 +0000 Subject: 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. --- chat.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'chat.c') 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"; -- cgit 1.4.0