Make sure to check the length of a ban mask before removing a forward channel.

Otherwise a line might be truncated later, leading to desyncs.
This commit is contained in:
Jilles Tjoelker 2011-09-25 16:25:17 +02:00
parent 2da6f6ebd7
commit 1aa35c8af1

View file

@ -807,6 +807,13 @@ chm_ban(struct Client *source_p, struct Channel *chptr,
else
mask = pretty_mask(raw_mask);
/* we'd have problems parsing this, hyb6 does it too
* also make sure it will always fit on a line with channel
* name etc.
*/
if(strlen(mask) > IRCD_MIN(BANLEN, MODEBUFLEN - 5))
return;
/* Look for a $ after the first character.
* As the first character, it marks an extban; afterwards
* it delimits a forward channel.
@ -818,13 +825,6 @@ chm_ban(struct Client *source_p, struct Channel *chptr,
forward = NULL;
}
/* we'd have problems parsing this, hyb6 does it too
* also make sure it will always fit on a line with channel
* name etc.
*/
if(strlen(mask) > IRCD_MIN(BANLEN, MODEBUFLEN - 5))
return;
/* if we're adding a NEW id */
if(dir == MODE_ADD)
{