diff options
author | Joseph Bisch <joseph.bisch@gmail.com> | 2017-10-16 16:21:10 -0400 |
---|---|---|
committer | ailin-nemui <ailin-nemui@users.noreply.github.com> | 2017-10-20 15:22:32 +0200 |
commit | 73d7b9d7753d35c63f24defe6d26c7c06ffa3cce (patch) | |
tree | 54ca5d218d96d0081c3fc02ec059da99770ca3cc /src/core | |
parent | 28d0b8c74602db0474c78ccbe17ae1ba03fcf665 (diff) | |
download | irssi-73d7b9d7753d35c63f24defe6d26c7c06ffa3cce.zip |
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.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/chat-commands.c | 5 |
1 files changed, 4 insertions, 1 deletions
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 ? |