X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmode.cpp;h=40ef66f0db76e75bb9a146cf0b5a3e3e0363aeec;hb=59b1a8955142935b02af6446005ab47fc7c3fc8c;hp=7909aad38cacea8cc8a5deef679443c056c005ad;hpb=3c45907c621f9f93d27c3ae7d2f26a9ba99b1c12;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/mode.cpp b/src/mode.cpp index 7909aad38..40ef66f0d 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -453,11 +453,11 @@ char* ModeParser::AddBan(userrec *user,char *dest,chanrec *chan,int status) strlcpy(b.data,dest,MAXBUF); if (*user->nick) { - strlcpy(b.set_by,user->nick,NICKMAX); + strlcpy(b.set_by,user->nick,NICKMAX-1); } else { - strlcpy(b.set_by,Srv->GetServerName().c_str(),NICKMAX); + strlcpy(b.set_by,Config->ServerName,NICKMAX-1); } chan->bans.push_back(b); return dest; @@ -589,6 +589,12 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int { r = NULL; + /* If we have more than MAXMODES changes in one line, + * drop all after the MAXMODES + */ + if (pc > MAXMODES-1) + break; + { switch (*modechar) { @@ -629,6 +635,7 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int log(DEBUG,"Ops"); if ((param >= pcnt)) break; log(DEBUG,"Enough parameters left"); + r = NULL; if (mdir == 1) { MOD_RESULT = 0; @@ -660,6 +667,7 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int case 'h': if (((param >= pcnt)) || (!Config->AllowHalfop)) break; + r = NULL; if (mdir == 1) { MOD_RESULT = 0; @@ -690,6 +698,7 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int case 'v': if ((param >= pcnt)) break; + r = NULL; if (mdir == 1) { MOD_RESULT = 0; @@ -719,6 +728,7 @@ void ModeParser::ProcessModes(char **parameters,userrec* user,chanrec *chan,int case 'b': if ((param >= pcnt)) break; + r = NULL; if (mdir == 1) { MOD_RESULT = 0; @@ -1205,7 +1215,7 @@ bool ModeParser::ProcessModuleUmode(char umode, userrec* source, void* dest, boo if (!source) { s2 = new userrec; - strlcpy(s2->nick,Config->ServerName,NICKMAX); + strlcpy(s2->nick,Config->ServerName,NICKMAX-1); strlcpy(s2->modes,"o",52); s2->fd = -1; source = s2;