From 35dcc7287dba6ebdc256b83df003db8165010a93 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Thu, 22 Nov 2012 02:16:59 +0000 Subject: [PATCH] - Use safe list iteration with loops which may remove clients --- src/ircd.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ircd.c b/src/ircd.c index 52e64d150..44e54abe1 100644 --- a/src/ircd.c +++ b/src/ircd.c @@ -477,15 +477,15 @@ EVENT(try_connections) */ void check_tkls(void) { - aClient *cptr = NULL; + aClient *cptr, *cptr2; ConfigItem_ban *bconf = NULL; char killflag = 0; char banbuf[1024]; - list_for_each_entry(cptr, &lclient_list, lclient_node) + list_for_each_entry_safe(cptr, cptr2, &lclient_list, lclient_node) { if (find_tkline_match(cptr, 0) < 0) - continue; + continue; find_shun(cptr); if (!killflag && IsPerson(cptr)) { @@ -563,7 +563,7 @@ void check_tkls(void) */ EVENT(check_pings) { - aClient *cptr = NULL; + aClient *cptr, *cptr2; ConfigItem_ban *bconf = NULL; char killflag = 0; int i = 0; @@ -572,7 +572,7 @@ EVENT(check_pings) int ping = 0; TS currenttime = TStime(); - list_for_each_entry(cptr, &lclient_list, lclient_node) + list_for_each_entry_safe(cptr, cptr2, &lclient_list, lclient_node) { /* * ** Note: No need to notify opers here. It's