Disallow wildcards in badchan set by local oper, and for local badchan by remote oper. diff -r 5eee2151f0b1 ircd/gline.c --- a/ircd/gline.c Thu Jan 22 21:50:34 2009 +0100 +++ b/ircd/gline.c Thu Jan 22 22:05:00 2009 +0100 @@ -494,6 +494,13 @@ if (*userhost == '#' || *userhost == '&') { if ((flags & GLINE_LOCAL) && !HasPriv(sptr, PRIV_LOCAL_BADCHAN)) return send_reply(sptr, ERR_NOPRIVILEGES); + + /* disallow wildcards in BADCHANs set by my oper + * and in local BADCHANs set by remote oper + */ + if ((MyUser(sptr) || (IsUser(sptr) && flags & GLINE_LOCAL)) && + string_has_wildcards(userhost)) + return send_reply(sptr, ERR_MASKTOOWIDE, userhost); flags |= GLINE_BADCHAN; user = userhost;