diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/actions.c | 4 | ||||
-rw-r--r-- | src/bahamut.c | 1 | ||||
-rw-r--r-- | src/channels.c | 3 | ||||
-rw-r--r-- | src/dreamforge.c | 1 | ||||
-rw-r--r-- | src/hybrid.c | 2 | ||||
-rw-r--r-- | src/messages.c | 4 | ||||
-rw-r--r-- | src/news.c | 9 | ||||
-rw-r--r-- | src/ptlink.c | 2 | ||||
-rw-r--r-- | src/rageircd.c | 2 | ||||
-rw-r--r-- | src/ultimate2.c | 1 | ||||
-rw-r--r-- | src/ultimate3.c | 2 | ||||
-rw-r--r-- | src/unreal31.c | 2 | ||||
-rw-r--r-- | src/unreal32.c | 1 | ||||
-rw-r--r-- | src/users.c | 9 | ||||
-rw-r--r-- | src/viagra.c | 1 |
15 files changed, 37 insertions, 7 deletions
diff --git a/src/actions.c b/src/actions.c index 1cfcdf2e1..a0750ed00 100644 --- a/src/actions.c +++ b/src/actions.c @@ -24,6 +24,10 @@ void bad_password(User * u) { time_t now = time(NULL); + if (!u) { + return; + } + if (!BadPassLimit) return; diff --git a/src/bahamut.c b/src/bahamut.c index e9e395293..88b8101ee 100644 --- a/src/bahamut.c +++ b/src/bahamut.c @@ -23,6 +23,7 @@ const char version_protocol[] = "BahamutIRCd 1.4.*/1.8.*"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = "+j"; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = "-j"; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 0; /* does send TSMODE but if it doesn't means it won't so this is disabled */ IRCDVar ircd[] = { {"BahamutIRCd 1.4.*/1.8.*", /* ircd name */ diff --git a/src/channels.c b/src/channels.c index a2f9b83ac..c1510fe7f 100644 --- a/src/channels.c +++ b/src/channels.c @@ -866,7 +866,8 @@ void do_cmode(const char *source, int ac, char **av) if (ircdcap->tsmode) { /* TSMODE for bahamut - leave this code out to break MODEs. -GD */ - if (uplink_capab & ircdcap->tsmode) { + /* if they don't send it in CAPAB check if we just want to enable it */ + if (uplink_capab & ircdcap->tsmode || UseTSMODE) { for (i = 0; i < strlen(av[1]); i++) { if (!isdigit(av[1][i])) break; diff --git a/src/dreamforge.c b/src/dreamforge.c index 43cd4532a..505deb9c8 100644 --- a/src/dreamforge.c +++ b/src/dreamforge.c @@ -21,6 +21,7 @@ const char version_protocol[] = "DreamForge 4.6.7"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 0; IRCDVar ircd[] = { {"DreamForge 4.6.7", /* ircd name */ diff --git a/src/hybrid.c b/src/hybrid.c index 637c05db0..83b827f4b 100644 --- a/src/hybrid.c +++ b/src/hybrid.c @@ -21,7 +21,7 @@ const char version_protocol[] = "Hybrid IRCd 7.0"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ - +int UseTSMODE = 0; IRCDVar ircd[] = { {"HybridIRCd 7.*", /* ircd name */ diff --git a/src/messages.c b/src/messages.c index 8b4c4f992..c9408a4ac 100644 --- a/src/messages.c +++ b/src/messages.c @@ -112,6 +112,10 @@ int m_privmsg(char *source, char *receiver, char *msg) ChannelInfo *ci; User *u; + if (!source || !*source) { + return MOD_CONT; + } + u = finduser(source); if (!u) { diff --git a/src/news.c b/src/news.c index 0b5ab796b..44195a985 100644 --- a/src/news.c +++ b/src/news.c @@ -1,4 +1,4 @@ - +/* News functions. /* News functions. * * (C) 2003 Anope Team @@ -496,8 +496,10 @@ static void do_news_del(User * u, int16 type, int *msgs, if (num > 0 && del_newsitem(num, type)) { notice_lang(s_OperServ, u, msgs[MSG_DELETED], num); /* Reset the order - #0000397 */ - for (i = 0; i < nnews; i++) - news[i].num = i + 1; + for (i = 0; i < nnews; i++) { + if ((news[i].type == type) && (news[i].num > num)) + news[i].num--; + } } else notice_lang(s_OperServ, u, msgs[MSG_DEL_NOT_FOUND], num); } else { @@ -537,3 +539,4 @@ static int del_newsitem(int num, short type) /*************************************************************************/ + diff --git a/src/ptlink.c b/src/ptlink.c index acab8a7a0..3ffa1bc50 100644 --- a/src/ptlink.c +++ b/src/ptlink.c @@ -21,7 +21,7 @@ const char version_protocol[] = "PTlink 6.14.5+"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ - +int UseTSMODE = 0; IRCDVar ircd[] = { {"PTlinkIRCd 6.14.*", /* ircd name */ diff --git a/src/rageircd.c b/src/rageircd.c index 555cf58db..66299805b 100644 --- a/src/rageircd.c +++ b/src/rageircd.c @@ -21,6 +21,7 @@ const char version_protocol[] = "RageIRCd 2.0.x"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 1; /* Rage beta 6 does not send TSMODE but uses it so we do this to enable it */ IRCDVar ircd[] = { @@ -718,6 +719,7 @@ void anope_cmd_svinfo() void anope_cmd_capab() { + /* future versions will support TSMODE */ send_cmd(NULL, "CAPAB BURST UNCONNECT SSJ3 SN2 VHOST"); } diff --git a/src/ultimate2.c b/src/ultimate2.c index 267c60ca3..ec6e8896d 100644 --- a/src/ultimate2.c +++ b/src/ultimate2.c @@ -21,6 +21,7 @@ const char version_protocol[] = "UltimateIRCd 2.8.2+"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 0; IRCDVar ircd[] = { {"UltimateIRCd 2.8.*", /* ircd name */ diff --git a/src/ultimate3.c b/src/ultimate3.c index dcde5b3a3..530266ac7 100644 --- a/src/ultimate3.c +++ b/src/ultimate3.c @@ -22,6 +22,8 @@ const char version_protocol[] = "UltimateIRCd 3.0.0.a26+"; const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 0; + IRCDVar ircd[] = { {"UltimateIRCd 3.0.*", /* ircd name */ diff --git a/src/unreal31.c b/src/unreal31.c index 89aca79d6..90ad7f240 100644 --- a/src/unreal31.c +++ b/src/unreal31.c @@ -24,6 +24,8 @@ const char version_protocol[] = "UnrealIRCd 3.1.1+"; const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 0; + IRCDVar ircd[] = { {"UnrealIRCd 3.1.x", /* ircd name */ "+oS", /* nickserv mode */ diff --git a/src/unreal32.c b/src/unreal32.c index 43054628e..2198d1a5a 100644 --- a/src/unreal32.c +++ b/src/unreal32.c @@ -23,6 +23,7 @@ const char version_protocol[] = "UnrealIRCd 3.2+"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 0; IRCDVar ircd[] = { {"UnrealIRCd 3.2.x", /* ircd name */ diff --git a/src/users.c b/src/users.c index b218c765a..bd15f8290 100644 --- a/src/users.c +++ b/src/users.c @@ -62,7 +62,14 @@ static User *new_user(const char *nick) static void change_user_nick(User * user, const char *nick) { User **list; - int is_same = (!stricmp(user->nick, nick) ? 1 : 0); + int is_same; + + /* Sanity check to make sure we don't segfault */ + if (!user || !nick || !*nick) { + return; + } + + is_same = (!stricmp(user->nick, nick) ? 1 : 0); if (user->prev) user->prev->next = user->next; diff --git a/src/viagra.c b/src/viagra.c index 260915c09..ff0038137 100644 --- a/src/viagra.c +++ b/src/viagra.c @@ -21,6 +21,7 @@ const char version_protocol[] = "ViagraIRCd 1.3.x"; /* Not all ircds use +f for their flood/join throttle system */ const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ +int UseTSMODE = 0; IRCDVar ircd[] = { {"ViagraIRCd 1.3.*", /* ircd name */ |