From 1aa35c8af1a07ffa3b8e406c84451ac3260b5f26 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sun, 25 Sep 2011 16:25:17 +0200 Subject: [PATCH] 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. --- src/chmode.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/chmode.c b/src/chmode.c index 2ba95c59..0e4b6975 100644 --- a/src/chmode.c +++ b/src/chmode.c @@ -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) {