]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/m_who.c
mkpasswd: Default to SHA512 instead of inherently insecure DES.
[irc/rqf/shadowircd.git] / modules / m_who.c
index 718ed094aa12ae1dc0ef3b4cab0d846ad42bb4fc..769beea2a195afd3d3ef175a39f09cfa2263e40f 100644 (file)
@@ -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)