inspircd

A modular C++ IRC daemon (ircd). https://www.inspircd.org/
Log | Files | Refs | README

commit 43e31bba5429849fdebeddc65f7e6f267211181f
parent 8e734ee8a1a562be6bfde7fff7d7c8446179c039
Author: Peter Powell <petpow@saberuk.com>
Date:   Fri,  7 Jun 2019 10:54:25 +0100

Check the unset level in autoop as well as the set level.

Diffstat:
Msrc/modules/m_autoop.cpp | 5+++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/modules/m_autoop.cpp b/src/modules/m_autoop.cpp @@ -62,9 +62,10 @@ class AutoOpList : public ListModeBase std::string dummy; if (mh->AccessCheck(source, channel, dummy, true) == MOD_RES_DENY) return MOD_RES_DENY; - if (mh->GetLevelRequired(true) > mylevel) + if (mh->GetLevelRequired(adding) > mylevel) { - source->WriteNumeric(ERR_CHANOPRIVSNEEDED, channel->name, InspIRCd::Format("You must be able to set mode '%s' to include it in an autoop", mid.c_str())); + source->WriteNumeric(ERR_CHANOPRIVSNEEDED, channel->name, InspIRCd::Format("You must be able to %s mode %c (%s) to %s an autoop containing it", + adding ? "set" : "unset", mh->GetModeChar(), mh->name.c_str(), adding ? "add" : "remove")); return MOD_RES_DENY; } return MOD_RES_PASSTHRU;