[svn] Fix desyncs with very long extbans. Bans can now be upto 195 chars long.

This commit is contained in:
jilles 2007-11-07 15:45:14 -08:00
parent 5b87d08a05
commit 832942858c
5 changed files with 23 additions and 10 deletions

View file

@ -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) jilles 2007/10/27 21:56:53 UTC (20071027-3574)
Log: Log:
Fix a memory leak. Fix a memory leak.

View file

@ -21,7 +21,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA * 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 #ifndef INCLUDED_channel_h
@ -93,7 +93,7 @@ struct membership
unsigned long bants; unsigned long bants;
}; };
#define BANLEN NICKLEN+USERLEN+HOSTLEN+6 #define BANLEN 195
struct Ban struct Ban
{ {
char *banstr; char *banstr;

View file

@ -1 +1 @@
#define SERNO "20071027-3574" #define SERNO "20071107-3578"

View file

@ -21,7 +21,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA * 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" #include "stdinc.h"
@ -109,8 +109,8 @@ allocate_ban(const char *banstr, const char *who)
{ {
struct Ban *bptr; struct Ban *bptr;
bptr = BlockHeapAlloc(ban_heap); bptr = BlockHeapAlloc(ban_heap);
DupNString(bptr->banstr, banstr, BANLEN); DupString(bptr->banstr, banstr);
DupNString(bptr->who, who, BANLEN); DupString(bptr->who, who);
return (bptr); return (bptr);
} }

View file

@ -22,7 +22,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA * 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" #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) dlink_list * list, long mode_type)
{ {
struct Ban *actualBan; struct Ban *actualBan;
static char who[BANLEN]; static char who[USERHOST_REPLYLEN];
char *realban = LOCAL_COPY(banid); char *realban = LOCAL_COPY(banid);
dlink_node *ptr; dlink_node *ptr;
@ -615,8 +615,11 @@ chm_ban(struct Client *source_p, struct Channel *chptr,
else else
mask = pretty_mask(raw_mask); mask = pretty_mask(raw_mask);
/* we'd have problems parsing this, hyb6 does it too */ /* we'd have problems parsing this, hyb6 does it too
if(strlen(mask) > (MODEBUFLEN - 2)) * also make sure it will always fit on a line with channel
* name etc.
*/
if(strlen(mask) > IRCD_MIN(BANLEN, MODEBUFLEN - 5))
return; return;
/* if we're adding a NEW id */ /* if we're adding a NEW id */