From bf526bb00c2fb89a400b330a9bbab71845a6b119 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Thu, 31 May 2012 21:22:49 -0400 Subject: [PATCH] Only allow current opers to WHOX. ircd/m_who.c (m_who): Only set WHOSELECT_EXTRA for current opers. --- ChangeLog | 6 ++++++ ircd/m_who.c | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index aa32341..988981e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-05-09 Michael Poole + + * ircd/m_who.c (m_who): Only set WHOSELECT_EXTRA for current + opers. Because privileges are kept after -o, this would let + de-opered clients use WHOX. + 2012-05-07 Michael Poole * include/client.h (cli_account): New helper macro to return the diff --git a/ircd/m_who.c b/ircd/m_who.c index f344e6f..49df475 100644 --- a/ircd/m_who.c +++ b/ircd/m_who.c @@ -184,10 +184,11 @@ int m_who(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) continue; case 'x': case 'X': - bitsel |= WHOSELECT_EXTRA; - if (HasPriv(sptr, PRIV_WHOX)) - log_write(LS_WHO, L_INFO, LOG_NOSNOTICE, "%#C WHO %s %s", sptr, - (BadPtr(parv[3]) ? parv[1] : parv[3]), parv[2]); + if (HasPriv(sptr, PRIV_WHOX) && IsAnOper(sptr)) { + bitsel |= WHOSELECT_EXTRA; + log_write(LS_WHO, L_INFO, LOG_NOSNOTICE, "%#C WHO %s %s", sptr, + (BadPtr(parv[3]) ? parv[1] : parv[3]), parv[2]); + } continue; case 'n': case 'N': -- 2.20.1