From def0285d0d229ed9055d7f9ad6c3b7572e648b82 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Mon, 6 Nov 2023 00:42:09 +0000 Subject: Fix a crash on shutdown when using ssl_gnutls on some systems. --- src/modules/extra/m_ssl_gnutls.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/modules') diff --git a/src/modules/extra/m_ssl_gnutls.cpp b/src/modules/extra/m_ssl_gnutls.cpp index f5802b69a..f596a54bf 100644 --- a/src/modules/extra/m_ssl_gnutls.cpp +++ b/src/modules/extra/m_ssl_gnutls.cpp @@ -1300,6 +1300,7 @@ class ModuleSSLGnuTLS : public Module // First member of the class, gets constructed first and destructed last GnuTLS::Init libinit; ProfileList profiles; + TR1NS::function rememberer; void ReadProfiles() { @@ -1373,6 +1374,7 @@ class ModuleSSLGnuTLS : public Module public: ModuleSSLGnuTLS() + : rememberer(ServerInstance->GenRandom) { #ifndef GNUTLS_HAS_RND gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); @@ -1383,7 +1385,7 @@ class ModuleSSLGnuTLS : public Module void init() CXX11_OVERRIDE { ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "GnuTLS lib version %s module was compiled for " GNUTLS_VERSION, gnutls_check_version(NULL)); - ServerInstance->GenRandom = RandGen::Call; + ServerInstance->GenRandom = &RandGen::Call; } void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE @@ -1411,7 +1413,7 @@ class ModuleSSLGnuTLS : public Module ~ModuleSSLGnuTLS() { - ServerInstance->GenRandom = &InspIRCd::DefaultGenRandom; + ServerInstance->GenRandom = rememberer; } void OnCleanup(ExtensionItem::ExtensibleType type, Extensible* item) CXX11_OVERRIDE -- cgit v1.3.1-10-gc9f91