diff -uNr ircservices-5.0.34/Changes ircservices-5.0.35/Changes --- ircservices-5.0.34/Changes 2004-07-05 23:51:57 +0900 +++ ircservices-5.0.35/Changes 2004-07-08 16:48:26 +0900 @@ -1,5 +1,11 @@ Version 5.0 ----------- +2004/07/08 .35 Fixed memory leak in httpd/auth-password module when + reconfiguring. +2004/07/08 Fixed bug causing HTTP password authorization to fail. + Reported by Martin Pels +2004/07/07 Added support for invite masks to Hybrid protocol. + Suggested by Jon Christopherson 2004/07/05 .34 configure now properly detects the GCC version in use when running under Debian Linux. 2004/07/02 Fixed bugs in handling MLOCK +/-j on Bahamut. @@ -240,7 +246,7 @@ Kane 2003/06/09 NickServ autojoin no longer auto-invites users into +i channels when the user doesn't have INVITE privileges. - Reported by Martin Pels + Reported by Martin Pels 2003/06/05 Fixed bug causing ChanServ to inappropriately remove some users' channel modes. Reported by Yusuf Iskenderoglu @@ -503,7 +509,7 @@ 2002/09/01 Removed stray .o file left around in previous releases. 2002/08/30 configure now detects GCC 2.96 and refuses to use it. 2002/08/28 p11 Fixed bug in importing nickgroups with IDs >2147483647. - Reported by Martin Pels + Reported by Martin Pels 2002/08/27 Users can no longer LINK pseudoclient nicknames, for real this time. Reported by 2002/08/26 p10 Fixed potential bugs when removing modules with REHASH. @@ -852,7 +858,7 @@ Reported by Ben Goldstein 2002/02/09 Fixed help messages relating to channel access levels to reflect the updated levels. Reported by Martin Pels - + 2002/02/09 Added TOPIC access level for ChanServ TOPIC command. 2002/02/09 Changed AUTODEOP and NOJOIN access levels to -1 and -100. 2002/02/08 a20 Mode changes from a single event are now merged into a @@ -919,19 +925,19 @@ information display. 2002/01/29 Fixed cosmetic bugs in NickServ DROPNICK output and httpd/dbaccess nickname information display. Reported - by Martin Pels + by Martin Pels 2002/01/28 Fixed crash in nickserv/oldlink LISTLINKS command. 2002/01/28 a17 Fixed BUG message occurring when a nick with registered channels was dropped. Reported by Martin Pels - + 2002/01/28 Fixed potential crash when dropping in-use channels. 2002/01/28 Fixed crash when expiring nicks with registered channels. - Reported by Martin Pels + Reported by Martin Pels 2002/01/28 Fixed bug causing oper help for NickServ SET to not be - shown. Reported by Martin Pels + shown. Reported by Martin Pels 2002/01/28 Fixed bug in MemoServ SET LIMIT where DEFAULT was interpreted as 0 and anything else as DEFAULT. - Reported by Martin Pels + Reported by Martin Pels 2002/01/28 Removed IrcIIHelp pseudoclient and ircII help files. 2002/01/24 Fixed bug in configure that caused the data directory to be asked for on the first run even if -defaults was given. @@ -1014,10 +1020,10 @@ services.conf (where they belong). 2002/01/14 Made OperServ RESTART work correctly again. 2002/01/14 Fixed crash on REHASH when StatServ is in use. Reported by - Martin Pels + Martin Pels 2002/01/14 Fixed broken-connection log message to be slightly more useful. 2002/01/14 Fixed crash on remote SQUIT. Reported by Martin Pels - + 2002/01/13 Ignored data elements no longer cause XML importing to abort immediately. 2002/01/13 Fixed bug in XML import causing crashes when called twice. @@ -1170,7 +1176,7 @@ ops). Reported by Ali Sor 2001/11/17 Fixed infinite loop (stack overflow) bug with MLOCK -k. 2001/11/14 Fixed bug in data/Makefile causing make install to crash. - Last 2 reported by Martin Pels + Last 2 reported by Martin Pels 2001/11/14 Fixed nick getting linked to itself by NickServ LINK. Reported by Finny Merrill 2001/11/14 Fixed bugs loading linked and forbidden nicks. diff -uNr ircservices-5.0.34/modules/httpd/auth-password.c ircservices-5.0.35/modules/httpd/auth-password.c --- ircservices-5.0.34/modules/httpd/auth-password.c 2004-07-05 23:57:01 +0900 +++ ircservices-5.0.35/modules/httpd/auth-password.c 2004-07-08 17:34:00 +0900 @@ -119,7 +119,7 @@ { DirInfo di; char *s; - int bufsize = 0; + int bufsize = 0, i; static DirInfo *new_protected = NULL; static int new_protected_count = 0; @@ -127,12 +127,21 @@ /* filename == NULL, do special handling */ switch (linenum) { case CDFUNC_INIT: /* prepare for reading */ + ARRAY_FOREACH (i, new_protected) { + free(new_protected[i].path); + free(new_protected[i].userpass); + } free(new_protected); new_protected = NULL; new_protected_count = 0; break; case CDFUNC_SET: /* store new values in config variables */ if (new_protected_count >= 0) { + ARRAY_FOREACH (i, protected) { + free(protected[i].path); + free(protected[i].userpass); + } + free(protected); protected = new_protected; protected_count = new_protected_count; new_protected = NULL; @@ -140,6 +149,10 @@ } break; case CDFUNC_DECONFIG: /* clear out config variables */ + ARRAY_FOREACH (i, protected) { + free(protected[i].path); + free(protected[i].userpass); + } free(protected); protected = NULL; protected_count = 0; @@ -183,7 +196,7 @@ free(di.path); return 0; } - if (encode_base64(param, strlen(param), NULL, 0) != bufsize) { + if (encode_base64(param, strlen(param), di.userpass, bufsize) != bufsize) { config_error(filename, linenum, "Internal error: base64 encoding" " failed"); free(di.userpass); @@ -238,7 +251,7 @@ module_httpd = NULL; } - for (i = 0; i < protected_count; i++) { + ARRAY_FOREACH (i, protected) { free(protected[i].path); free(protected[i].userpass); } diff -uNr ircservices-5.0.34/modules/protocol/hybrid.c ircservices-5.0.35/modules/protocol/hybrid.c --- ircservices-5.0.34/modules/protocol/hybrid.c 2004-07-05 23:57:01 +0900 +++ ircservices-5.0.35/modules/protocol/hybrid.c 2004-07-08 17:34:01 +0900 @@ -15,6 +15,7 @@ #define BAHAMUT_HACK #include "sjoin.h" #include "banexcept.h" +#include "invitemask.h" #include "svsnick.h" /*************************************************************************/ @@ -116,6 +117,9 @@ if (stricmp(s, "EX") == 0) { protocol_features |= PF_BANEXCEPT; init_banexcept(module); + } else if (stricmp(s, "IE") == 0) { + protocol_features |= PF_INVITEMASK; + init_invitemask(module); } else if (stricmp(s, "QS") == 0) { protocol_features |= PF_NOQUIT; } else if (stricmp(s, "TBURST") == 0) { @@ -432,6 +436,8 @@ return 0; } + if (protocol_features & PF_INVITEMASK) + exit_invitemask(); if (protocol_features & PF_BANEXCEPT) exit_banexcept(); exit_sjoin(); diff -uNr ircservices-5.0.34/version.sh ircservices-5.0.35/version.sh --- ircservices-5.0.34/version.sh 2004-07-05 23:52:23 +0900 +++ ircservices-5.0.35/version.sh 2004-07-08 16:47:16 +0900 @@ -6,7 +6,7 @@ # $PROGRAM is the string returned as the first part of a /VERSION reply, # and must not contain spaces. It is not used anywhere else. PROGRAM=ircservices -VERSION=5.0.34 +VERSION=5.0.35 # Increment Services build number if [ -f version.c ] ; then