From e1976796bf99ddc6f9f8b946b5cdea26e9e5245a Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Sat, 4 Jan 2014 13:02:39 +0100 Subject: Show +i users on a channel to opers having the channels/auspex priv who do /NAMES from outside of the chan Discovered by @Cronus89 --- src/channels.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/channels.cpp b/src/channels.cpp index 4f63654a5..b5132c8b3 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -772,7 +772,9 @@ void Channel::UserList(User *user) if (!IS_LOCAL(user)) return; - if (this->IsModeSet('s') && !this->HasUser(user) && !user->HasPrivPermission("channels/auspex")) + bool has_privs = user->HasPrivPermission("channels/auspex"); + + if (this->IsModeSet('s') && !this->HasUser(user) && !has_privs) { user->WriteNumeric(ERR_NOSUCHNICK, "%s %s :No such nick/channel",user->nick.c_str(), this->name.c_str()); return; @@ -792,7 +794,7 @@ void Channel::UserList(User *user) { if (i->first->quitting) continue; - if ((!has_user) && (i->first->IsModeSet('i'))) + if ((!has_user) && (i->first->IsModeSet('i')) && (!has_privs)) { /* * user is +i, and source not on the channel, does not show -- cgit v1.2.3