From 8c4887c166bb0b13ded2de6c838c30da1fc656e6 Mon Sep 17 00:00:00 2001 From: Juliusz Sosinowicz Date: Fri, 22 Apr 2022 15:54:04 +0200 Subject: [PATCH] Free session in `wolfSSL_clear` - Define `NO_SESSION_CACHE_REF` in wpa build --- configure.ac | 1 + src/ssl.c | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 9f5198f25..7d551e816 100644 --- a/configure.ac +++ b/configure.ac @@ -1393,6 +1393,7 @@ then AM_CFLAGS="$AM_CFLAGS -DKEEP_OUR_CERT" AM_CFLAGS="$AM_CFLAGS -DKEEP_PEER_CERT" AM_CFLAGS="$AM_CFLAGS -DHAVE_KEYING_MATERIAL" + AM_CFLAGS="$AM_CFLAGS -DNO_SESSION_CACHE_REF" fi if test "$ENABLED_FORTRESS" = "yes" diff --git a/src/ssl.c b/src/ssl.c index 1282c36e6..1e0a51c99 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -17989,14 +17989,17 @@ size_t wolfSSL_get_client_random(const WOLFSSL* ssl, unsigned char* out, if (ssl->hsHashes) (void)InitHandshakeHashes(ssl); -#ifdef SESSION_CERTS - ssl->session->chain.count = 0; -#endif #ifdef KEEP_PEER_CERT FreeX509(&ssl->peerCert); InitX509(&ssl->peerCert, 0, ssl->heap); #endif + wolfSSL_SESSION_free(ssl->session); + ssl->session = wolfSSL_NewSession(ssl->heap); + if (ssl->session == NULL) { + return WOLFSSL_FAILURE; + } + return WOLFSSL_SUCCESS; }