]> jfr.im git - irc/rqf/shadowircd.git/commitdiff
[svn] Fix desyncs with very long extbans. Bans can now be upto 195 chars long.
authorjilles <redacted>
Wed, 7 Nov 2007 23:45:14 +0000 (15:45 -0800)
committerjilles <redacted>
Wed, 7 Nov 2007 23:45:14 +0000 (15:45 -0800)
ChangeLog
include/channel.h
include/serno.h
src/channel.c
src/chmode.c

index 71b85077d2b4a6e67e3ee4270a8158fc4b85678f..fef5b900eb37ec256a6d5cfbb6d7fa498a6675e3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+jilles      2007/11/07 21:45:14 UTC    (20071107-3578)
+  Log:
+  allocate_channel(): no need to truncate name, its only caller already does it
+  furthermore, truncating here causes an inconsistent channel name
+  
+
+  Changes:     Modified:
+  +1 -1                trunk/src/channel.c (File Modified) 
+
+
 jilles      2007/10/27 21:56:53 UTC    (20071027-3574)
   Log:
   Fix a memory leak.
index ce9ef0047bdc7f174a588201509bd6afb6de113f..c743c55ed16ea186726562d6756862272f50b5bc 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: channel.h 2727 2006-11-09 23:48:45Z jilles $
+ *  $Id: channel.h 3580 2007-11-07 23:45:14Z jilles $
  */
 
 #ifndef INCLUDED_channel_h
@@ -93,7 +93,7 @@ struct membership
        unsigned long bants;
 };
 
-#define BANLEN NICKLEN+USERLEN+HOSTLEN+6
+#define BANLEN 195
 struct Ban
 {
        char *banstr;
index 06bfb6b63f42a26b8b96ee8d0414a87ef35332ec..f8c0d9c71033b05b19eadce134fd2456e7a9814f 100644 (file)
@@ -1 +1 @@
-#define SERNO "20071027-3574"
+#define SERNO "20071107-3578"
index 709eb2d3aa22b3a366424abad155102badc546e4..c0fdcc3d626909fdbbd7abc933d5e4064ece3e3c 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: channel.c 3578 2007-11-07 21:45:14Z jilles $
+ *  $Id: channel.c 3580 2007-11-07 23:45:14Z jilles $
  */
 
 #include "stdinc.h"
@@ -109,8 +109,8 @@ allocate_ban(const char *banstr, const char *who)
 {
        struct Ban *bptr;
        bptr = BlockHeapAlloc(ban_heap);
-       DupNString(bptr->banstr, banstr, BANLEN);
-       DupNString(bptr->who, who, BANLEN);
+       DupString(bptr->banstr, banstr);
+       DupString(bptr->who, who);
 
        return (bptr);
 }
index e7bd9bcc8c05e68d988ac62ec26b6f519b280ccf..3f42a6f845486ee77e11c4c2f1edf265bdcc1bad 100644 (file)
@@ -22,7 +22,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: chmode.c 3534 2007-07-14 13:34:50Z jilles $
+ *  $Id: chmode.c 3580 2007-11-07 23:45:14Z jilles $
  */
 
 #include "stdinc.h"
@@ -92,7 +92,7 @@ add_id(struct Client *source_p, struct Channel *chptr, const char *banid,
        dlink_list * list, long mode_type)
 {
        struct Ban *actualBan;
-       static char who[BANLEN];
+       static char who[USERHOST_REPLYLEN];
        char *realban = LOCAL_COPY(banid);
        dlink_node *ptr;
 
@@ -615,8 +615,11 @@ chm_ban(struct Client *source_p, struct Channel *chptr,
        else
                mask = pretty_mask(raw_mask);
 
-       /* we'd have problems parsing this, hyb6 does it too */
-       if(strlen(mask) > (MODEBUFLEN - 2))
+       /* we'd have problems parsing this, hyb6 does it too
+        * also make sure it will always fit on a line with channel
+        * name etc.
+        */
+       if(strlen(mask) > IRCD_MIN(BANLEN, MODEBUFLEN - 5))
                return;
 
        /* if we're adding a NEW id */