]> jfr.im git - irc/quakenet/newserv.git/blobdiff - whowas/whowas_commands.c
GLINES: fix null pointer deref in trustgline / trustungline
[irc/quakenet/newserv.git] / whowas / whowas_commands.c
index 946111ea52166b60e5e497fa60425e19bcfdfbf2..db688ae29dfd2de7759e958821710a72bd35bba6 100644 (file)
@@ -26,8 +26,8 @@ static int whowas_cmdwhowas(void *source, int cargc, char **cargv) {
   if (cargc > 1)
     limit = strtol(cargv[1], NULL, 10);
 
-  for (i = whowasoffset; i < whowasoffset + WW_MAXENTRIES; i++) {
-    ww = &whowasrecs[i % WW_MAXENTRIES];
+  for (i = whowasoffset; i < whowasoffset + whowasmax; i++) {
+    ww = &whowasrecs[i % whowasmax];
 
     if (ww->type == WHOWAS_UNUSED)
       continue;
@@ -38,9 +38,10 @@ static int whowas_cmdwhowas(void *source, int cargc, char **cargv) {
     if (match2strings(pattern, hostmask)) {
       matches++;
 
-      if (matches <= limit)
+      if (matches <= limit) {
         controlreply(sender, "%s", whowas_format(ww));
-      else if (matches == limit + 1)
+        controlreply(sender, "%s", whowas_formatchannels(ww));
+      } else if (matches == limit + 1)
         controlreply(sender, "--- More than %d matches, skipping the rest", limit);
     }
   }
@@ -65,6 +66,7 @@ static int whowas_cmdwhowaschase(void *source, int cargc, char **cargv) {
   }
 
   controlreply(sender, "%s", whowas_format(ww));
+  controlreply(sender, "%s", whowas_formatchannels(ww));
   controlreply(sender, "Done.");
 
   return CMD_OK;