X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/0ec112cc002d3a19fed66135cbd8595090920810..62a2743ab7aef4888c53c7dbc1c46c28d19a95b2:/modules/m_who.c diff --git a/modules/m_who.c b/modules/m_who.c index 718ed09..769beea 100644 --- a/modules/m_who.c +++ b/modules/m_who.c @@ -21,7 +21,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA * - * $Id: m_who.c 3350 2007-04-02 22:03:08Z jilles $ */ #include "stdinc.h" #include "common.h" @@ -84,7 +83,6 @@ static void do_who(struct Client *source_p, /* ** m_who -** parv[0] = sender prefix ** parv[1] = nickname mask list ** parv[2] = additional selection flag and format options */ @@ -443,7 +441,7 @@ append_format(char *buf, size_t bufsize, size_t *pos, const char *fmt, ...) max = *pos >= bufsize ? 0 : bufsize - *pos; va_start(ap, fmt); - result = rb_vsnprintf(buf + *pos, bufsize - *pos, fmt, ap); + result = rb_vsnprintf(buf + *pos, max, fmt, ap); va_end(ap); *pos += result; } @@ -475,7 +473,7 @@ do_who(struct Client *source_p, struct Client *target_p, struct membership *mspt source_p->name, msptr ? msptr->chptr->chname : "*", target_p->username, target_p->host, target_p->servptr->name, target_p->name, status, - ConfigServerHide.flatten_links ? 0 : target_p->hopcount, + ConfigServerHide.flatten_links && !IsOper(source_p) && !IsExemptShide(source_p) ? 0 : target_p->hopcount, target_p->info); else { @@ -505,7 +503,7 @@ do_who(struct Client *source_p, struct Client *target_p, struct membership *mspt if (fmt->fields & FIELD_FLAGS) append_format(str, sizeof str, &pos, " %s", status); if (fmt->fields & FIELD_HOP) - append_format(str, sizeof str, &pos, " %d", ConfigServerHide.flatten_links ? 0 : target_p->hopcount); + append_format(str, sizeof str, &pos, " %d", ConfigServerHide.flatten_links && !IsOper(source_p) && !IsExemptShide(source_p) ? 0 : target_p->hopcount); if (fmt->fields & FIELD_IDLE) append_format(str, sizeof str, &pos, " %d", (int)(MyClient(target_p) ? rb_current_time() - target_p->localClient->last : 0)); if (fmt->fields & FIELD_ACCOUNT)