]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add a constant for the maximum length of a mode parameter.
authorPeter Powell <petpow@saberuk.com>
Tue, 23 Jul 2019 14:17:01 +0000 (15:17 +0100)
committerPeter Powell <petpow@saberuk.com>
Tue, 23 Jul 2019 14:17:01 +0000 (15:17 +0100)
include/mode.h
src/listmode.cpp
src/mode.cpp
src/modules/m_chanfilter.cpp

index 683f4b55b27502556940ba4207bcccbd917723cf..b357de03d7e73dc8c9fd4296fa989b35a25442ae 100644 (file)
@@ -544,8 +544,12 @@ class CoreExport ModeWatcher : public classbase
 class CoreExport ModeParser : public fakederef<ModeParser>
 {
  public:
+       /** The maximum number of modes which can be created. */
        static const ModeHandler::Id MODEID_MAX = 64;
 
+       /** The maximum length of a mode parameter. */
+       static const size_t MODE_PARAM_MAX = 250;
+
        /** Type of the container that maps mode names to ModeHandlers
         */
        typedef TR1NS::unordered_map<std::string, ModeHandler*, irc::insensitive, irc::StrHashComp> ModeHandlerMap;
index 3d82217793a944a1ec104811fd17922d73f1edb3..2a2515cd235a0b0b181b77bc550b3ba10d306607 100644 (file)
@@ -160,9 +160,6 @@ ModeAction ListModeBase::OnModeChange(User* source, User*, Channel* channel, std
                if (tidy)
                        ModeParser::CleanMask(parameter);
 
-               if (parameter.length() > 250)
-                       return MODEACTION_DENY;
-
                // If there was no list
                if (!cd)
                {
index 159474985b1daec0a0e2f7dd17bbb7de83030545..8b0d886072bc634c8e058f4f0d463c6f97bfb26e 100644 (file)
@@ -249,9 +249,9 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, Mode
        const bool needs_param = mh->NeedsParam(adding);
 
        std::string& parameter = mcitem.param;
-       // crop mode parameter size to 250 characters
-       if (parameter.length() > 250 && adding)
-               parameter.erase(250);
+       // crop mode parameter size to MODE_PARAM_MAX characters
+       if (parameter.length() > MODE_PARAM_MAX && adding)
+               parameter.erase(MODE_PARAM_MAX);
 
        ModResult MOD_RESULT;
        FIRST_MOD_RESULT(OnRawMode, MOD_RESULT, (user, chan, mh, parameter, adding));
index b2323176c8676f231338ea0b9b6bdcda22fb7843..6131ab9166d2471f050a8cfaa8c960a148fb8c2a 100644 (file)
@@ -71,7 +71,7 @@ class ModuleChanFilter : public Module
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("chanfilter");
                hidemask = tag->getBool("hidemask");
-               cf.maxlen = tag->getUInt("maxlen", 35, 10, 100);
+               cf.maxlen = tag->getUInt("maxlen", 35, 10, ModeParser::MODE_PARAM_MAX);
                notifyuser = tag->getBool("notifyuser", true);
                cf.DoRehash();
        }