From 66f82ccf926aac39273bfc652c85c08080cc9a46 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Thu, 9 Jun 2016 15:12:35 +0200 Subject: [PATCH 1/1] Fix for GCC 6 rightfully optimizing out the NULL check of 'this' in ConfigTag::readString() Checking is only necessary in ModuleSSLInfo::OnPostConnect() as oper types are not encountered in the other cases but check anyway to be sure --- src/commands/cmd_oper.cpp | 2 +- src/modules/m_sslinfo.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/commands/cmd_oper.cpp b/src/commands/cmd_oper.cpp index 1a5e7e178..95f6b98df 100644 --- a/src/commands/cmd_oper.cpp +++ b/src/commands/cmd_oper.cpp @@ -69,7 +69,7 @@ CmdResult CommandOper::HandleLocal(const std::vector& parameters, L snprintf(TheIP, MAXBUF,"%s@%s",user->ident.c_str(),user->GetIPString()); OperIndex::iterator i = ServerInstance->Config->oper_blocks.find(parameters[0]); - if (i != ServerInstance->Config->oper_blocks.end()) + if ((i != ServerInstance->Config->oper_blocks.end()) && (i->second->oper_block)) { OperInfo* ifo = i->second; ConfigTag* tag = ifo->oper_block; diff --git a/src/modules/m_sslinfo.cpp b/src/modules/m_sslinfo.cpp index 2bfe0e1c4..083ac0f04 100644 --- a/src/modules/m_sslinfo.cpp +++ b/src/modules/m_sslinfo.cpp @@ -180,6 +180,9 @@ class ModuleSSLInfo : public Module if (i != ServerInstance->Config->oper_blocks.end()) { OperInfo* ifo = i->second; + if (!ifo->oper_block) + return MOD_RES_PASSTHRU; + ssl_cert* cert = cmd.CertExt.get(user); if (ifo->oper_block->getBool("sslonly") && !cert) @@ -220,6 +223,9 @@ class ModuleSSLInfo : public Module for(OperIndex::iterator i = ServerInstance->Config->oper_blocks.begin(); i != ServerInstance->Config->oper_blocks.end(); i++) { OperInfo* ifo = i->second; + if (!ifo->oper_block) + continue; + std::string fp = ifo->oper_block->getString("fingerprint"); if (fp == cert->fingerprint && ifo->oper_block->getBool("autologin")) user->Oper(ifo); -- 2.39.2