From 73d7b9d7753d35c63f24defe6d26c7c06ffa3cce Mon Sep 17 00:00:00 2001 From: Joseph Bisch Date: Mon, 16 Oct 2017 16:21:10 -0400 Subject: [PATCH] Don't proceed with cmd_msg if there was an error splitting msg There may be cases (such as if target or server->nick is very long) where the split_message function returns NULL, indicating an error. To avoid a potential segfault, we now check to see if splitmsgs is NULL. --- src/core/chat-commands.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/chat-commands.c b/src/core/chat-commands.c index d5a133f8..77f02aa2 100644 --- a/src/core/chat-commands.c +++ b/src/core/chat-commands.c @@ -404,7 +404,10 @@ static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item) else splitmsgs = singlemsg; - while ((m = splitmsgs[n++])) { + /* splitmsgs may be NULL if there was an error */ + g_warn_if_fail(splitmsgs != NULL); + + while (splitmsgs && (m = splitmsgs[n++])) { signal_emit("server sendmsg", 4, server, target, m, GINT_TO_POINTER(target_type)); signal_emit(target_type == SEND_TARGET_CHANNEL ?