[svn] Fix desyncs with very long extbans. Bans can now be upto 195 chars long.
This commit is contained in:
parent
5b87d08a05
commit
832942858c
5 changed files with 23 additions and 10 deletions
10
ChangeLog
10
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)
|
jilles 2007/10/27 21:56:53 UTC (20071027-3574)
|
||||||
Log:
|
Log:
|
||||||
Fix a memory leak.
|
Fix a memory leak.
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#define SERNO "20071027-3574"
|
#define SERNO "20071107-3578"
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
11
src/chmode.c
11
src/chmode.c
|
@ -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 */
|
||||||
|
|
Loading…
Reference in a new issue