From d75238496b4ba31d9b348f54c9d34c7ac2beb020 Mon Sep 17 00:00:00 2001 From: adam- Date: Mon, 6 Jul 2009 07:27:16 +0000 Subject: Made pre-command channel sanity checks only apply to ChanServ and BotServ. Its not needed elsewhere and just causes issues git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2361 5417fbe8-f217-4b02-8779-1006273d7864 --- src/commands.c | 4 ++-- src/core/ms_del.c | 9 +++++++-- src/core/ms_info.c | 8 ++++++-- src/core/ms_list.c | 10 +++++++--- src/core/ms_read.c | 10 +++++++--- 5 files changed, 29 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/commands.c b/src/commands.c index 034725b31..e9071141c 100644 --- a/src/commands.c +++ b/src/commands.c @@ -125,7 +125,7 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char * if (MOD_RESULT == EVENT_STOP) return; - if (params.size() > 0) + if (params.size() > 0 && !c->HasFlag(CFLAG_STRIP_CHANNEL) && (cmdTable == CHANSERV || cmdTable == BOTSERV)) { if (ircdproto->IsChannelValid(params[0].c_str())) { @@ -153,7 +153,7 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char * } } /* A user not giving a channel name for a param that should be a channel */ - else if ((cmdTable == CHANSERV || cmdTable == BOTSERV) && !c->HasFlag(CFLAG_STRIP_CHANNEL)) + else { notice_lang(service, u, CHAN_X_INVALID, params[0].c_str()); return; diff --git a/src/core/ms_del.c b/src/core/ms_del.c index f5f0a231d..4e8e619cc 100644 --- a/src/core/ms_del.c +++ b/src/core/ms_del.c @@ -37,8 +37,13 @@ class CommandMSDel : public Command { chan = numstr; numstr = params.size() > 1 ? params[1].c_str() : NULL; - ci = cs_findchan(chan); - if (readonly) + + if (!(ci = cs_findchan(chan))) + { + notice_lang(s_MemoServ, u, CHAN_X_NOT_REGISTERED, chan); + return MOD_CONT; + } + else if (readonly) { notice_lang(s_MemoServ, u, READ_ONLY_MODE); return MOD_CONT; diff --git a/src/core/ms_info.c b/src/core/ms_info.c index 890bb74b9..2b1880157 100644 --- a/src/core/ms_info.c +++ b/src/core/ms_info.c @@ -48,8 +48,12 @@ class CommandMSInfo : public Command } else if (name && *name == '#') { - ci = cs_findchan(name); - if (!check_access(u, ci, CA_MEMO)) + if (!(ci = cs_findchan(name))) + { + notice_lang(s_MemoServ, u, CHAN_X_NOT_REGISTERED, name); + return MOD_CONT; + } + else if (!check_access(u, ci, CA_MEMO)) { notice_lang(s_MemoServ, u, ACCESS_DENIED); return MOD_CONT; diff --git a/src/core/ms_list.c b/src/core/ms_list.c index 7dccbe06e..c59de4365 100644 --- a/src/core/ms_list.c +++ b/src/core/ms_list.c @@ -37,9 +37,13 @@ class CommandMSList : public Command { chan = param; param = params.size() > 1 ? params[1].c_str() : NULL; - ci = cs_findchan(chan); - - if (!check_access(u, ci, CA_MEMO)) + + if (!(ci = cs_findchan(chan))) + { + notice_lang(s_MemoServ, u, CHAN_X_NOT_REGISTERED, chan); + return MOD_CONT; + } + else if (!check_access(u, ci, CA_MEMO)) { notice_lang(s_MemoServ, u, ACCESS_DENIED); return MOD_CONT; diff --git a/src/core/ms_read.c b/src/core/ms_read.c index 6a1e5af6e..6020e8c97 100644 --- a/src/core/ms_read.c +++ b/src/core/ms_read.c @@ -37,9 +37,13 @@ class CommandMSRead : public Command { chan = numstr; numstr = params.size() > 1 ? params[1].c_str() : NULL; - ci = cs_findchan(chan); - - if (!check_access(u, ci, CA_MEMO)) + + if (!(ci = cs_findchan(chan))) + { + notice_lang(s_MemoServ, u, CHAN_X_NOT_REGISTERED, chan); + return MOD_CONT; + } + else if (!check_access(u, ci, CA_MEMO)) { notice_lang(s_MemoServ, u, ACCESS_DENIED); return MOD_CONT; -- cgit