summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/cs_kick.c4
-rw-r--r--src/core/cs_modes.c12
-rw-r--r--version.log3
3 files changed, 10 insertions, 9 deletions
diff --git a/src/core/cs_kick.c b/src/core/cs_kick.c
index 3795d7ebd..bf8fe72d0 100644
--- a/src/core/cs_kick.c
+++ b/src/core/cs_kick.c
@@ -123,8 +123,6 @@ int do_cs_kick(User * u)
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan);
} else if (is_same ? !(u2 = u) : !(u2 = finduser(params))) {
notice_lang(s_ChanServ, u, NICK_X_NOT_IN_USE, params);
- } else if (!is_on_chan(c, u2)) {
- notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
} else if (!is_same ? !check_access(u, ci, CA_KICK) :
!check_access(u, ci, CA_KICKME)) {
notice_lang(s_ChanServ, u, ACCESS_DENIED);
@@ -133,6 +131,8 @@ int do_cs_kick(User * u)
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
} else if (is_protected(u2)) {
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
+ } else if (!is_on_chan(c, u2)) {
+ notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
} else {
char *av[3];
diff --git a/src/core/cs_modes.c b/src/core/cs_modes.c
index 3a82a1aa6..bdb162d3e 100644
--- a/src/core/cs_modes.c
+++ b/src/core/cs_modes.c
@@ -243,10 +243,10 @@ int do_owner(User * u)
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
} else if (ci->flags & CI_VERBOTEN) {
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
- } else if (!is_on_chan(c, u)) {
- notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
} else if (!is_founder(u, ci)) {
notice_lang(s_ChanServ, u, ACCESS_DENIED);
+ } else if (!is_on_chan(c, u)) {
+ notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
} else {
anope_cmd_mode(whosends(ci), c->name, "%s %s", ircd->ownerset,
GET_USER(u));
@@ -299,10 +299,10 @@ int do_deowner(User * u)
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
} else if (ci->flags & CI_VERBOTEN) {
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
- } else if (!is_on_chan(c, u)) {
- notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
} else if (!is_founder(u, ci)) {
notice_lang(s_ChanServ, u, ACCESS_DENIED);
+ } else if (!is_on_chan(c, u)) {
+ notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
} else {
anope_cmd_mode(whosends(ci), c->name, "%s %s", ircd->ownerunset,
GET_USER(u));
@@ -366,8 +366,6 @@ int do_util(User * u, CSModeUtil * util)
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
} else if (is_same ? !(u2 = u) : !(u2 = finduser(nick))) {
notice_lang(s_ChanServ, u, NICK_X_NOT_IN_USE, nick);
- } else if (!is_on_chan(c, u2)) {
- notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
} else if (is_same ? !check_access(u, ci, util->levelself) :
!check_access(u, ci, util->level)) {
notice_lang(s_ChanServ, u, ACCESS_DENIED);
@@ -376,6 +374,8 @@ int do_util(User * u, CSModeUtil * util)
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
} else if (*util->mode == '-' && is_protected(u2) && !is_same) {
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
+ } else if (!is_on_chan(c, u2)) {
+ notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
} else {
anope_cmd_mode(whosends(ci), c->name, "%s %s", util->mode,
GET_USER(u2));
diff --git a/version.log b/version.log
index fe40593c1..4341ef7e6 100644
--- a/version.log
+++ b/version.log
@@ -9,10 +9,11 @@ VERSION_MAJOR="1"
VERSION_MINOR="8"
VERSION_PATCH="3"
VERSION_EXTRA="-svn"
-VERSION_BUILD="2816"
+VERSION_BUILD="2818"
# $Log$ # Changes since 1.8.3 Release
+#Revision 2818 - Fixed bug #1141, reordered some access checks in cs_kick and cs_modes to hide who is on the channel
#Revision 2816 - Fixed os_info to display syntax errors if you entered no text
#Revision 2815 - Fixed os_info to backup its databases properly with the now-working ModuleDatabaseBackup function
#Revision 2811 - Fixed bug #1140 - Made ModuleDatabaseBackup() not fail when multiple modules want to back up their databases