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.
Этот коммит содержится в:
Klemens Nanni 2021-06-06 00:20:52 +00:00 коммит произвёл C. McEnroe
родитель 1c7a755e67
Коммит 0fe004c5c4

6
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);