From ae64d277b8204c156a30d2e8b6a958e5a31f2a7f Mon Sep 17 00:00:00 2001 From: Klemens Nanni Date: Tue, 29 Jun 2021 12:41:03 +0000 Subject: Explicitly clear TLS secrets afer handshake No need to keep them at runtime; do so unconditionally for the sake of simplicity. Declare TLS config globally so ircConnect() can clear it and declare both client and config statically as they are not used outside the irc.c module. --- irc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/irc.c b/irc.c index 61d74bb..c308e46 100644 --- a/irc.c +++ b/irc.c @@ -43,12 +43,13 @@ #include "chat.h" -struct tls *client; +static struct tls *client; +static struct tls_config *config; void ircConfig( bool insecure, const char *trust, const char *cert, const char *priv ) { - struct tls_config *config = tls_config_new(); + config = tls_config_new(); if (!config) errx(EX_SOFTWARE, "tls_config_new"); int error; @@ -167,6 +168,7 @@ int ircConnect(const char *bindHost, const char *host, const char *port) { } while (error == TLS_WANT_POLLIN || error == TLS_WANT_POLLOUT); if (error) errx(EX_PROTOCOL, "tls_handshake: %s", tls_error(client)); + tls_config_clear_keys(config); return sock; } -- cgit 1.4.1-2-gfad0