X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd%2Fm_burst.c;h=f1e4429e32d0d0d9d273478240374f7abb6006f5;hp=649898d22b83e586f28728aab3392ddb74b9f53e;hb=837bdbbb0e7e270cfd1d40a7ad730beaffa6c000;hpb=475427901039c9c14ff5bcae9458f937ce89108d diff --git a/ircd/m_burst.c b/ircd/m_burst.c index 649898d..f1e4429 100644 --- a/ircd/m_burst.c +++ b/ircd/m_burst.c @@ -509,6 +509,11 @@ int ms_burst(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) } while (IsDigit(*ptr)); --ptr; oplevel += level_increment; + if (oplevel > MAXOPLEVEL) { + protocol_violation(sptr, "Invalid cumulative oplevel %u during burst", oplevel); + oplevel = MAXOPLEVEL; + break; + } } else { /* I don't recognize that flag */ protocol_violation(sptr, "Invalid flag '%c' in nick part of burst", *ptr); @@ -537,7 +542,7 @@ int ms_burst(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) nickstr[nickpos++] = 'v'; if (current_mode & CHFL_CHANOP) { - if (chptr->mode.apass[0]) + if (oplevel != MAXOPLEVEL) nickpos += ircd_snprintf(0, nickstr + nickpos, sizeof(nickstr) - nickpos, "%u", oplevel); else nickstr[nickpos++] = 'o';