Avoid overwriting part of a server-set ban's banstr field.
authorMichael Poole <mdpoole@troilus.org>
Wed, 17 Aug 2005 02:07:10 +0000 (02:07 +0000)
committerMichael Poole <mdpoole@troilus.org>
Wed, 17 Aug 2005 02:07:10 +0000 (02:07 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1458 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/channel.c

index 67ca31e59e81c17f65d6b3a3f3e0fe76fb8a1b51..b33bec6b3b4b175e095d9b49a52cb9bb97286f56 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-08-16  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (mode_parse_ban): Avoid overwriting part of
+       newban->banstr[] when the source is a server.  (Spotted by jcq.)
+
 2005-08-16  Michael Poole <mdpoole@troilus.org>
 
        * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for
index fcf1d3a4e1818edce15ababf3f88a3968199be73..04d92997dc003d90c09c406ded60357f598b45e4 100644 (file)
@@ -2819,7 +2819,7 @@ mode_parse_ban(struct ParseState *state, int *flag_p)
   newban->flags = ((state->dir == MODE_ADD) ? BAN_ADD : BAN_DEL)
       | (*flag_p == MODE_BAN ? 0 : BAN_EXCEPTION);
   set_ban_mask(newban, collapse(pretty_mask(t_str)));
-  ircd_strncpy(newban->who, cli_name(state->sptr), HOSTLEN);
+  ircd_strncpy(newban->who, IsUser(state->sptr) ? cli_name(state->sptr) : "*", NICKLEN);
   newban->when = TStime();
   apply_ban(&state->chptr->banlist, newban, 0);
 }