From 5d06de42d57e503c81d24bcfdf0422a86eeee7fc Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Tue, 13 Sep 2005 15:17:46 +0000 Subject: [PATCH] Rip out clean_channelname() and reject invalid names where appropriate. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1485 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- ChangeLog | 15 +++++++++++++++ include/channel.h | 1 - ircd/m_invite.c | 9 +++------ ircd/m_join.c | 3 +-- ircd/m_mode.c | 2 -- ircd/m_names.c | 1 - ircd/m_opmode.c | 1 - 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index d63a47d..f9fe982 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2005-09-13 Michael Poole + + * include/channel.h (clean_channelname): Remove prototype. + + * ircd/m_invite.c (m_invite): Do not clean channel name; just + reject invalid channel names. + + * ircd/m_join.c (m_join): Likewise. + + * ircd/m_mode.c (m_mode): Do not clean channel name. + + * ircd/m_names.c (m_names): Likewise. + + * ircd/m_opmode.c (mo_opmode): Likewise. + 2005-09-13 Michael Poole * ircd/channel.c (find_ban): Revert to older style of comparison, diff --git a/include/channel.h b/include/channel.h index fd01bed..6abc777 100644 --- a/include/channel.h +++ b/include/channel.h @@ -364,7 +364,6 @@ extern int LocalChanOperMode; /* * Proto types */ -extern void clean_channelname(char* name); extern void channel_modes(struct Client *cptr, char *mbuf, char *pbuf, int buflen, struct Channel *chptr, struct Membership *member); diff --git a/ircd/m_invite.c b/ircd/m_invite.c index e5270f2..2479753 100644 --- a/ircd/m_invite.c +++ b/ircd/m_invite.c @@ -142,12 +142,9 @@ int m_invite(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (is_silenced(sptr, acptr)) return 0; - clean_channelname(parv[2]); - - if (!IsChannelPrefix(*parv[2])) - return 0; - - if (!(chptr = FindChannel(parv[2]))) { + if (!IsChannelName(parv[2]) + || !strIsIrcCh(parv[2]) + || !(chptr = FindChannel(parv[2]))) { send_reply(sptr, ERR_NOSUCHCHANNEL, parv[2]); return 0; } diff --git a/ircd/m_join.c b/ircd/m_join.c index f230beb..2a58a37 100644 --- a/ircd/m_join.c +++ b/ircd/m_join.c @@ -135,8 +135,7 @@ int m_join(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) if (key && !key[0]) key = 0; - clean_channelname(name); - if (!IsChannelName(name)) + if (!IsChannelName(name) || !strIsIrcCh(name)) { /* bad channel name */ send_reply(sptr, ERR_NOSUCHCHANNEL, name); diff --git a/ircd/m_mode.c b/ircd/m_mode.c index fb957a4..480799b 100644 --- a/ircd/m_mode.c +++ b/ircd/m_mode.c @@ -111,8 +111,6 @@ m_mode(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) if (parc < 2) return need_more_params(sptr, "MODE"); - clean_channelname(parv[1]); - if (!IsChannelName(parv[1]) || !(chptr = FindChannel(parv[1]))) return set_user_mode(cptr, sptr, parc, parv); diff --git a/ircd/m_names.c b/ircd/m_names.c index 6c74178..193f932 100644 --- a/ircd/m_names.c +++ b/ircd/m_names.c @@ -327,7 +327,6 @@ int m_names(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) * (As performed with each /join) - ** High frequency usage ** */ - clean_channelname(para); chptr = FindChannel(para); if (chptr) { diff --git a/ircd/m_opmode.c b/ircd/m_opmode.c index 142f38b..829b323 100644 --- a/ircd/m_opmode.c +++ b/ircd/m_opmode.c @@ -159,7 +159,6 @@ int mo_opmode(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) return send_reply(sptr, ERR_NOPRIVILEGES); force = 1; } - clean_channelname(chname); if (!HasPriv(sptr, IsLocalChannel(chname) ? PRIV_LOCAL_OPMODE : PRIV_OPMODE)) -- 2.20.1