From b5b17f22e98ce06bc639edede60784bb1988a9e5 Mon Sep 17 00:00:00 2001 From: attilamolnar Date: Wed, 3 Oct 2012 02:37:05 +0200 Subject: [PATCH] m_services_account Fix possible recursion when checking 'U' extbans --- src/modules/m_services_account.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index 08986d53c..ac5338332 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -209,6 +209,10 @@ class ModuleServicesAccount : public Module ModResult OnCheckBan(User* user, Channel* chan, const std::string& mask) { + static bool checking = false; + if (checking) + return MOD_RES_PASSTHRU; + if (mask[1] == ':') { if (mask[0] == 'R') @@ -226,7 +230,11 @@ class ModuleServicesAccount : public Module /* If we made it this far we know the user isn't registered so just deny if it matches */ - if (chan->GetExtBanStatus(user, 'U') == MOD_RES_DENY) + checking = true; + bool result = chan->CheckBan(user, mask.substr(2)); + checking = false; + + if (result) return MOD_RES_DENY; } } -- 2.39.5