diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/bs_unassign.c | 5 | ||||
| -rw-r--r-- | src/core/cs_invite.c | 2 | ||||
| -rw-r--r-- | src/protocol/charybdis.c | 12 | ||||
| -rw-r--r-- | src/protocol/ptlink.c | 9 | ||||
| -rw-r--r-- | src/protocol/ratbox.c | 12 | ||||
| -rw-r--r-- | src/protocol/shadowircd.c | 12 |
6 files changed, 45 insertions, 7 deletions
diff --git a/src/core/bs_unassign.c b/src/core/bs_unassign.c index 1789189ba..1bc978c81 100644 --- a/src/core/bs_unassign.c +++ b/src/core/bs_unassign.c @@ -79,9 +79,10 @@ int do_unassign(User * u) notice_lang(s_BotServ, u, CHAN_X_FORBIDDEN, chan); else if (!is_services_admin(u) && !check_access(u, ci, CA_ASSIGN)) notice_lang(s_BotServ, u, ACCESS_DENIED); + else if (!ci->bi) + notice_help(s_BotServ, u, BOT_NOT_ASSIGNED); else { - if (ci->bi) - unassign(u, ci); + unassign(u, ci); notice_lang(s_BotServ, u, BOT_UNASSIGN_UNASSIGNED, ci->name); } return MOD_CONT; diff --git a/src/core/cs_invite.c b/src/core/cs_invite.c index bd3bb8e2b..1687151fc 100644 --- a/src/core/cs_invite.c +++ b/src/core/cs_invite.c @@ -79,6 +79,8 @@ int do_invite(User * u) notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan); } else if (ci->flags & CI_VERBOTEN) { notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); + } else if (ci->flags & CI_SUSPENDED) { + notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); } else if (!u || !check_access(u, ci, CA_INVITE)) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); } else { diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c index 5add45073..a04653e27 100644 --- a/src/protocol/charybdis.c +++ b/src/protocol/charybdis.c @@ -676,11 +676,16 @@ int anope_event_tburst(char *source, int ac, char **av) alog("debug: TOPIC %s for nonexistent channel %s", merge_args(ac - 1, av + 1), av[0]); } + if (setter) + free(setter); return MOD_CONT; } - if (check_topiclock(c, topic_time)) + if (check_topiclock(c, topic_time)) { + if (setter) + free(setter); return MOD_CONT; + } if (c->topic) { free(c->topic); @@ -693,6 +698,8 @@ int anope_event_tburst(char *source, int ac, char **av) c->topic_time = topic_time; record_topic(av[0]); + if (setter) + free(setter); return MOD_CONT; } @@ -1702,7 +1709,10 @@ int anope_event_bmask(char *source, int ac, char **av) if (!stricmp(av[2], "I")) { add_invite(c, b); } + if (b) + free(b); } + free(bans); } return MOD_CONT; } diff --git a/src/protocol/ptlink.c b/src/protocol/ptlink.c index 13f1ba7b3..8b7039941 100644 --- a/src/protocol/ptlink.c +++ b/src/protocol/ptlink.c @@ -418,6 +418,7 @@ int anope_event_newmask(char *source, int ac, char **av) { User *u; char *newhost = NULL, *newuser = NULL; + int tofree = 0; if (ac != 1) return MOD_CONT; @@ -445,7 +446,9 @@ int anope_event_newmask(char *source, int ac, char **av) newuser = myStrGetOnlyToken(av[0], '@', 0); if (newuser) { newhost = myStrGetTokenRemainder(av[0], '@', 1); + tofree = 1; change_user_username(u, newuser); + free(newuser); } else { newhost = av[0]; } @@ -455,9 +458,11 @@ int anope_event_newmask(char *source, int ac, char **av) u->mode |= UMODE_VH; - if (newhost) { + if (newhost) change_user_host(u, newhost); - } + + if (tofree) + free(newhost); return MOD_CONT; } diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c index 47b1b68f9..ea591a0ce 100644 --- a/src/protocol/ratbox.c +++ b/src/protocol/ratbox.c @@ -667,11 +667,16 @@ int anope_event_tburst(char *source, int ac, char **av) alog("debug: TOPIC %s for nonexistent channel %s", merge_args(ac - 1, av + 1), av[0]); } + if (setter) + free(setter); return MOD_CONT; } - if (check_topiclock(c, topic_time)) + if (check_topiclock(c, topic_time)) { + if (setter) + free(setter); return MOD_CONT; + } if (c->topic) { free(c->topic); @@ -684,6 +689,8 @@ int anope_event_tburst(char *source, int ac, char **av) c->topic_time = topic_time; record_topic(av[0]); + if (setter) + free(setter); return MOD_CONT; } @@ -1679,7 +1686,10 @@ int anope_event_bmask(char *source, int ac, char **av) if (!stricmp(av[2], "I")) { add_invite(c, b); } + if (b) + free(b); } + free(bans); } return MOD_CONT; } diff --git a/src/protocol/shadowircd.c b/src/protocol/shadowircd.c index 6d3410073..0c2741f93 100644 --- a/src/protocol/shadowircd.c +++ b/src/protocol/shadowircd.c @@ -706,11 +706,16 @@ int anope_event_tburst(char *source, int ac, char **av) alog("debug: TOPIC %s for nonexistent channel %s", merge_args(ac - 1, av + 1), av[0]); } + if (setter) + free(setter); return MOD_CONT; } - if (check_topiclock(c, topic_time)) + if (check_topiclock(c, topic_time)) { + if (setter) + free(setter); return MOD_CONT; + } if (c->topic) { free(c->topic); @@ -723,6 +728,8 @@ int anope_event_tburst(char *source, int ac, char **av) c->topic_time = topic_time; record_topic(av[0]); + if (setter) + free(setter); return MOD_CONT; } @@ -1627,7 +1634,10 @@ int anope_event_bmask(char *source, int ac, char **av) if (!stricmp(av[2], "I")) { add_invite(c, b); } + if (b) + free(b); } + free(bans); } return MOD_CONT; } |
