summaryrefslogtreecommitdiff
path: root/src/irc
diff options
context:
space:
mode:
authorailin-nemui <ailin-nemui@users.noreply.github.com>2017-10-08 19:47:50 +0200
committerailin-nemui <ailin-nemui@users.noreply.github.com>2017-10-08 19:48:11 +0200
commit49ace3251b79a9e97c6e4d0bc640f9143dc71b90 (patch)
tree5c8074bebe67f30e21e7ae6cf09e5178432625c2 /src/irc
parent016fd344362ddcc4b1a0781df9ac2416acc54e69 (diff)
downloadirssi-49ace3251b79a9e97c6e4d0bc640f9143dc71b90.zip
fix uaf in chanquery module
the chanquery needs to be removed in any case if a channel rec is destroyed, regardless of any state Fixes GL#13
Diffstat (limited to 'src/irc')
-rw-r--r--src/irc/core/channels-query.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/irc/core/channels-query.c b/src/irc/core/channels-query.c
index 857ebaf0..d161aec1 100644
--- a/src/irc/core/channels-query.c
+++ b/src/irc/core/channels-query.c
@@ -125,15 +125,15 @@ static void query_remove_all(IRC_CHANNEL_REC *channel)
rec->queries[n] = g_slist_remove(rec->queries[n], channel);
rec->current_queries = g_slist_remove(rec->current_queries, channel);
- query_check(channel->server);
+ if (!channel->server->disconnected)
+ query_check(channel->server);
}
static void sig_channel_destroyed(IRC_CHANNEL_REC *channel)
{
g_return_if_fail(channel != NULL);
- if (IS_IRC_CHANNEL(channel) && !channel->server->disconnected &&
- !channel->synced)
+ if (IS_IRC_CHANNEL(channel))
query_remove_all(channel);
}