diff options
author | Klemens Nanni | 2021-06-07 23:40:39 +0000 |
---|---|---|
committer | C. McEnroe | 2021-06-09 09:21:17 -0400 |
commit | a989e156a14462a1bb6c78f6ead115ddd04fed8f (patch) | |
tree | 06370ef1733e145809451aa1e5049ff49392e050 /chat.c | |
parent | 7ea14eec84241da5ca5dce0df6d86fda45762858 (diff) |
OpenBSD: hoist -o/printCert code to simplify
Nothing but the TLS handshake is required, so skip all other setup. On OpenBSD, unveil() handling needs fixing which will involve code reshuffling -- this is the first related but standalone step. Also pledge this one-off code path individually such with simpler and tighter promises while here.
Diffstat (limited to 'chat.c')
-rw-r--r-- | chat.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/chat.c b/chat.c index b3990f3..b62840f 100644 --- a/chat.c +++ b/chat.c @@ -266,6 +266,19 @@ int main(int argc, char *argv[]) { } if (!host) errx(EX_USAGE, "host required"); + if (printCert) { +#ifdef __OpenBSD__ + unveilAll(trust, cert, priv); + int error = pledge("stdio rpath inet dns", NULL); + if (error) err(EX_OSERR, "pledge"); +#endif + ircConfig(insecure, trust, cert, priv); + ircConnect(bind, host, port); + ircPrintCert(); + ircClose(); + return EX_OK; + } + if (!nick) nick = getenv("USER"); if (!nick) errx(EX_CONFIG, "USER unset"); if (!user) user = nick; @@ -300,12 +313,6 @@ int main(int argc, char *argv[]) { #endif ircConfig(insecure, trust, cert, priv); - if (printCert) { - ircConnect(bind, host, port); - ircPrintCert(); - ircClose(); - return EX_OK; - } uiInitEarly(); if (save) { |