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.
master
Klemens Nanni 2021-06-07 23:40:40 +00:00 committed by C. McEnroe
parent a989e156a1
commit c97a9eb870
1 changed files with 4 additions and 4 deletions

8
chat.c
View File

@ -157,7 +157,6 @@ static void unveilAll(const char *trust, const char *cert, const char *priv) {
const char *path; const char *path;
const char *perm; const char *perm;
} paths[] = { } paths[] = {
{ "/usr/share/terminfo", "r" },
{ tls_default_ca_cert_file(), "r" }, { tls_default_ca_cert_file(), "r" },
}; };
for (size_t i = 0; i < ARRAY_LEN(paths); ++i) { for (size_t i = 0; i < ARRAY_LEN(paths); ++i) {
@ -306,15 +305,16 @@ int main(int argc, char *argv[]) {
editCompleteAdd(); editCompleteAdd();
commandCompleteAdd(); commandCompleteAdd();
ircConfig(insecure, trust, cert, priv);
uiInitEarly();
#ifdef __OpenBSD__ #ifdef __OpenBSD__
if (self.restricted) unveilAll(trust, cert, priv); if (self.restricted) unveilAll(trust, cert, priv);
int error = pledge("stdio rpath wpath cpath inet dns tty proc exec", NULL); int error = pledge("stdio rpath wpath cpath inet dns tty proc exec", NULL);
if (error) err(EX_OSERR, "pledge"); if (error) err(EX_OSERR, "pledge");
#endif #endif
ircConfig(insecure, trust, cert, priv);
uiInitEarly();
if (save) { if (save) {
uiLoad(save); uiLoad(save);
atexit(exitSave); atexit(exitSave);