diff options
| author | 2006-08-18 17:18:48 +0000 | |
|---|---|---|
| committer | 2006-08-18 17:18:48 +0000 | |
| commit | 496ed41d336eeaa2a96d3890bcdce48b00ad93db (patch) | |
| tree | 8dc35e3cf911a1af6f54222e46fb9e51a0970721 /src/mode.cpp | |
| parent | Don't allow key with spaces in (diff) | |
i HATE HATE HATE the 1.0 mode parser. (thanks to sts for the bug report)
git-svn-id: http://svn.inspircd.org/repository/branches/1_0_stable@4962 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/mode.cpp')
| -rw-r--r-- | src/mode.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mode.cpp b/src/mode.cpp index 04fc2cd43..ae907d965 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -611,6 +611,8 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int case 'b': if ((param >= pcnt)) break; + if ((!*parameters[param]) || (strchr(parameters[param],' ')) || (strchr(parameters[param],':'))) + break; r = NULL; if (mdir == 1) { @@ -659,7 +661,7 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'k', parameters[param], true, 1)); if (!MOD_RESULT) { - if ((*parameters[param]) && (!strchr(parameters[param],' '))) + if ((*parameters[param]) && (!strchr(parameters[param],' ')) && (!strchr(parameters[param],':'))) { *outl++ = 'k'; char key[MAXBUF]; @@ -914,10 +916,20 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int { if ((ModeDefinedOn(*modechar,MT_CHANNEL)>0) && (mdir)) { + if ((!*parameters[param]) || (strchr(parameters[param],' ')) || (strchr(parameters[param],':'))) + { + log(DEBUG,"Gank, broken mode!"); + break; + } p.push_back(parameters[param]); } if ((ModeDefinedOff(*modechar,MT_CHANNEL)>0) && (!mdir)) { + if ((!*parameters[param]) || (strchr(parameters[param],' ')) || (strchr(parameters[param],':'))) + { + log(DEBUG,"Gank, broken mode!"); + break; + } p.push_back(parameters[param]); } } |
