summary refs log tree commit diff
diff options
context:
space:
mode:
authorKlemens Nanni2021-06-07 23:40:40 +0000
committerC. McEnroe2021-06-09 09:21:51 -0400
commitc97a9eb8707bee6b558b1b2bad860bbdc1253588 (patch)
tree504b0f30d686b8c1443a8fa84a9c50b0e3c45a1a
parenta989e156a14462a1bb6c78f6ead115ddd04fed8f (diff)
OpenBSD: unveil after ncurses(3) init to support TERMINFO
initscr(3) in uiInitEarly() attempts more than /usr/share/terminfo/, see
`mandoc -O tag=TERMINFO ncurses`.

Even though non-default terminfo handling seems rare and it is unlikely
to have ever caused a problem for catgirl users on OpenBSD, the current
is still wrong by oversimplifying it.

Avoid the entire curses/unveil clash by setting up the screen before
unveiling.
-rw-r--r--chat.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/chat.c b/chat.c
index b62840f..19ca3d3 100644
--- a/chat.c
+++ b/chat.c
@@ -157,7 +157,6 @@ static void unveilAll(const char *trust, const char *cert, const char *priv) {
 		const char *path;
 		const char *perm;
 	} paths[] = {
-		{ "/usr/share/terminfo", "r" },
 		{ tls_default_ca_cert_file(), "r" },
 	};
 	for (size_t i = 0; i < ARRAY_LEN(paths); ++i) {
@@ -306,15 +305,16 @@ int main(int argc, char *argv[]) {
 	editCompleteAdd();
 	commandCompleteAdd();
 
+	ircConfig(insecure, trust, cert, priv);
+
+	uiInitEarly();
+
 #ifdef __OpenBSD__
 	if (self.restricted) unveilAll(trust, cert, priv);
 	int error = pledge("stdio rpath wpath cpath inet dns tty proc exec", NULL);
 	if (error) err(EX_OSERR, "pledge");
 #endif
 
-	ircConfig(insecure, trust, cert, priv);
-
-	uiInitEarly();
 	if (save) {
 		uiLoad(save);
 		atexit(exitSave);