Hi all, Currently, the OVERRIDE checks allowing PRIV_WALK_LCHAN operators to join local channels do not work if the real channel key is OVERRIDE. This is correct if the key is OVERRIDE and that is the only impediment to joining. However, when there is another additional impediment, such as a ban against the operator, or the channel is +i, this cannot be overriden because the channel key is OVERRIDE.
The attached patch resolves this issue. Andrew(A1kmm)
? deaf_delayed.patch ? join_ik_OVERRIDE.patch ? wasdelayed-bugfix.patch ? ircd/.Rhistory ? ircd/convert-conf ? ircd/test/ircd_match_t Index: ircd/m_join.c =================================================================== RCS file: /cvsroot/undernet-ircu/ircu2.10/ircd/m_join.c,v retrieving revision 1.35 diff -u -d -r1.35 m_join.c --- ircd/m_join.c 6 Oct 2005 23:49:25 -0000 1.35 +++ ircd/m_join.c 29 Oct 2005 11:54:44 -0000 @@ -210,24 +210,30 @@ if (IsLocalChannel(chptr->chname) && HasPriv(sptr, PRIV_WALK_LCHAN) && !(flags & CHFL_CHANOP) - && key && !strcmp(key, "OVERRIDE") - && strcmp(chptr->mode.key, "OVERRIDE")) + && key && !strcmp(key, "OVERRIDE")) { - switch (err) { - case 0: + if (err == 0 && strcmp(chptr->mode.key, "OVERRIDE") && + strcmp(chptr->mode.apass, "OVERRIDE") && + strcmp(chptr->mode.upass, "OVERRIDE")) + { send_reply(sptr, ERR_DONTCHEAT, chptr->chname); continue; - case ERR_INVITEONLYCHAN: err = 'i'; break; - case ERR_CHANNELISFULL: err = 'l'; break; - case ERR_BANNEDFROMCHAN: err = 'b'; break; - case ERR_BADCHANNELKEY: err = 'k'; break; - case ERR_NEEDREGGEDNICK: err = 'r'; break; - default: err = '?'; break; } - /* send accountability notice */ - sendto_opmask_butone(0, SNO_HACK4, "OPER JOIN: %C JOIN %H " - "(overriding +%c)", sptr, chptr, err); - err = 0; + if (err != 0) + { + switch (err) { + case ERR_INVITEONLYCHAN: err = 'i'; break; + case ERR_CHANNELISFULL: err = 'l'; break; + case ERR_BANNEDFROMCHAN: err = 'b'; break; + case ERR_BADCHANNELKEY: err = 'k'; break; + case ERR_NEEDREGGEDNICK: err = 'r'; break; + default: err = '?'; break; + } + /* send accountability notice */ + sendto_opmask_butone(0, SNO_HACK4, "OPER JOIN: %C JOIN %H " + "(overriding +%c)", sptr, chptr, err); + err = 0; + } } /* Is there some reason the user may not join? */
_______________________________________________ Coder-com mailing list Coder-com@undernet.org http://undernet.sbg.org/mailman/listinfo/coder-com