diff -uNr ircservices-5.0.7/Changes ircservices-5.0.8/Changes --- ircservices-5.0.7/Changes 2003-01-31 02:04:58.000000000 +0900 +++ ircservices-5.0.8/Changes 2003-01-31 01:52:47.000000000 +0900 @@ -1,5 +1,7 @@ Version 5.0 ----------- +2002/01/31 .8 Fixed a number of compilation warnings. +2002/01/31 Fixed typo and thinko causing crashes on channel mode changes. 2002/01/30 .7 Fixed crash when opening a corrupt StatServ database. Reported by Rob van Eijk 2002/01/30 Added robustness in clearing mode +r from users after diff -uNr ircservices-5.0.7/actions.c ircservices-5.0.8/actions.c --- ircservices-5.0.7/actions.c 2003-01-31 02:04:58.000000000 +0900 +++ ircservices-5.0.8/actions.c 2003-01-31 02:08:29.000000000 +0900 @@ -293,7 +293,7 @@ /* See if we already have pending modes for the channel; if so, reuse * that entry (if the entry is for a different sender, flush out the - * pending modes first). + * pending modes first). */ for (i = 0; i < MERGE_CHANMODES_MAX; i++) { if (modedata[i].used != 0 && modedata[i].channel == channel) { if (irc_stricmp(modedata[i].sender, sender) != 0) @@ -474,11 +474,16 @@ int len = 0, i; char lastc = 0; + /* Clear timeout for this entry if one is set */ if (md->timeout) { del_timeout(md->timeout); md->timeout = NULL; } + if (!md->channel) { + /* This entry is unused, just return */ + goto done; + } if (!md->binmodes_on && !md->binmodes_off && !*md->opmodes) { /* No actual modes here */ goto done; diff -uNr ircservices-5.0.7/modules/database/version4.c ircservices-5.0.8/modules/database/version4.c --- ircservices-5.0.7/modules/database/version4.c 2003-01-31 02:04:58.000000000 +0900 +++ ircservices-5.0.8/modules/database/version4.c 2003-01-31 02:08:29.000000000 +0900 @@ -2191,7 +2191,7 @@ fail: module_log("Read error on %s", f->filename); - return NULL; + return 0; } /*************************************************************************/ diff -uNr ircservices-5.0.7/modules/operserv/akill.c ircservices-5.0.8/modules/operserv/akill.c --- ircservices-5.0.7/modules/operserv/akill.c 2003-01-31 02:04:58.000000000 +0900 +++ ircservices-5.0.8/modules/operserv/akill.c 2003-01-31 02:08:30.000000000 +0900 @@ -438,6 +438,7 @@ send_akill(akill); } } + return 0; } /*************************************************************************/ diff -uNr ircservices-5.0.7/modules/operserv/sline.c ircservices-5.0.8/modules/operserv/sline.c --- ircservices-5.0.7/modules/operserv/sline.c 2003-01-31 02:04:58.000000000 +0900 +++ ircservices-5.0.8/modules/operserv/sline.c 2003-01-31 02:08:30.000000000 +0900 @@ -403,6 +403,7 @@ } } } + return 0; } /*************************************************************************/ diff -uNr ircservices-5.0.7/modules/protocol/ptlink.c ircservices-5.0.8/modules/protocol/ptlink.c --- ircservices-5.0.7/modules/protocol/ptlink.c 2003-01-31 02:04:58.000000000 +0900 +++ ircservices-5.0.8/modules/protocol/ptlink.c 2003-01-31 02:08:30.000000000 +0900 @@ -134,9 +134,7 @@ static void m_nick(char *source, int ac, char **av) { - char *newmodes, ipbuf[16], *s; - char **newav[10]; - uint32 ip; + char *newav[10]; if (*source) { /* Old user changing nicks. */ @@ -167,11 +165,11 @@ newav[4] = av[5]; /* Hostname */ newav[5] = av[7]; /* Server */ newav[6] = av[8]; /* Real name */ - av[7] = av[6]; /* Services stamp */ - av[6] = av[8]; /* IP address */ - av[8] = av[9]; /* User area (fake hostname) */ + newav[7] = NULL; /* Services stamp */ + newav[8] = NULL; /* IP address */ + newav[9] = av[6]; /* User area (fake hostname) */ - if (do_nick(source, ac, newav)) { + if (do_nick(source, 10, newav)) { /* We succeeded, so set modes */ newav[1] = av[3]; do_umode(av[0], 2, newav); @@ -244,7 +242,7 @@ User *u; if (ac < 1) { - module_log("NEWUSER: parameters missing--broken ircd?", source); + module_log("NEWUSER: parameters missing--broken ircd?"); return; } if (!(u = get_user(source))) { diff -uNr ircservices-5.0.7/version.sh ircservices-5.0.8/version.sh --- ircservices-5.0.7/version.sh 2003-01-31 02:04:58.000000000 +0900 +++ ircservices-5.0.8/version.sh 2003-01-31 01:45:14.000000000 +0900 @@ -3,7 +3,7 @@ # Build the version.c file which contains all the version related info and # needs to be updated on a per-build basis. -VERSION=5.0.7 +VERSION=5.0.8 # Increment Services build number if [ -f version.c ] ; then