summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-03-01 00:42:04 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-03-01 00:42:04 +0000
commit7906b8273dedc41659495df3cc4e0b3dd5d516c9 (patch)
treebb93c98ae744ae35fa83750914ff36c25cf7b999
parented4188cff393bd544aabd44f593640a473deacc4 (diff)
Cap masks and bans at 250 characters
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12575 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/helperfuncs.cpp3
-rw-r--r--src/mode.cpp4
2 files changed, 7 insertions, 0 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 779bc94cc..c5cfdd79a 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -173,6 +173,9 @@ bool InspIRCd::IsValidMask(const std::string &mask)
if (exclamation != 1 || atsign != 1)
return false;
+ if (mask.length() > 250)
+ return false;
+
return true;
}
diff --git a/src/mode.cpp b/src/mode.cpp
index a632ab516..bda0f81aa 100644
--- a/src/mode.cpp
+++ b/src/mode.cpp
@@ -265,6 +265,10 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, bool
ModeHandler *mh = FindMode(modechar, type);
int pcnt = mh->GetNumParams(adding);
+ // crop mode parameter size to 250 characters
+ if (parameter.length() > 250)
+ parameter = parameter.substr(0, 250);
+
ModResult MOD_RESULT;
FIRST_MOD_RESULT(OnRawMode, MOD_RESULT, (user, chan, modechar, parameter, adding, pcnt));