From d6d74c0da981af22fb8cbfa68d3bdc5446c55155 Mon Sep 17 00:00:00 2001 From: ailin-nemui Date: Mon, 6 Jun 2016 16:58:40 +0200 Subject: Do not crash on OPTCHAN when item has no server May fix bugs.debian.org#826525 --- src/core/commands.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/core') diff --git a/src/core/commands.c b/src/core/commands.c index 88d1208c..607baf77 100644 --- a/src/core/commands.c +++ b/src/core/commands.c @@ -666,7 +666,7 @@ get_optional_channel(WI_ITEM_REC *active_item, char **data, int require_name) const char *ret; char *tmp, *origtmp, *channel; - if (active_item == NULL) { + if (active_item == NULL || active_item->server == NULL) { /* no active channel in window, channel required */ return cmd_get_param(data); } @@ -674,11 +674,13 @@ get_optional_channel(WI_ITEM_REC *active_item, char **data, int require_name) origtmp = tmp = g_strdup(*data); channel = cmd_get_param(&tmp); - if (g_strcmp0(channel, "*") == 0 && !require_name) { + if (g_strcmp0(channel, "*") == 0 && IS_CHANNEL(active_item) && + !require_name) { /* "*" means active channel */ cmd_get_param(data); ret = window_item_get_target(active_item); - } else if (!server_ischannel(active_item->server, channel)) { + } else if (IS_CHANNEL(active_item) && + !server_ischannel(active_item->server, channel)) { /* we don't have channel parameter - use active channel */ ret = window_item_get_target(active_item); } else { -- cgit v1.2.3