mirror of
https://github.com/weechat/weechat.git
synced 2026-06-30 06:46:38 +02:00
irc: fix crash in split of IRC message containing a newline if the server is not given
This commit is contained in:
@@ -10,6 +10,13 @@ This document lists all the changes for each version. +
|
||||
For a list of important changes that require manual actions, please look at release notes.
|
||||
|
||||
|
||||
[[v4.2.3]]
|
||||
== Version 4.2.3 (under dev)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* irc: fix crash in split of IRC message containing a newline if the server is not given
|
||||
|
||||
[[v4.2.2]]
|
||||
== Version 4.2.2 (2024-04-07)
|
||||
|
||||
|
||||
@@ -1683,8 +1683,9 @@ irc_message_split (struct t_irc_server *server, const char *message)
|
||||
}
|
||||
|
||||
multiline = (
|
||||
((weechat_strcasecmp (command, "privmsg") == 0)
|
||||
|| (weechat_strcasecmp (command, "notice") == 0))
|
||||
server
|
||||
&& ((weechat_strcasecmp (command, "privmsg") == 0)
|
||||
|| (weechat_strcasecmp (command, "notice") == 0))
|
||||
&& message
|
||||
&& strchr (message, '\n')
|
||||
&& (index_args + 1 <= argc - 1)
|
||||
|
||||
@@ -1997,6 +1997,21 @@ TEST(IrcMessage, Split)
|
||||
hashtable_remove (server->cap_list, "batch");
|
||||
hashtable_remove (server->cap_list, "draft/multiline");
|
||||
|
||||
/* PRIVMSG with newlines but no server: BATCH is not used */
|
||||
hashtable = irc_message_split (NULL, "PRIVMSG #channel :test\n\nline 3");
|
||||
CHECK(hashtable);
|
||||
LONGS_EQUAL(7, hashtable->items_count);
|
||||
STRCMP_EQUAL("3", (const char *)hashtable_get (hashtable, "count"));
|
||||
STRCMP_EQUAL("PRIVMSG #channel :test",
|
||||
(const char *)hashtable_get (hashtable, "msg1"));
|
||||
STRCMP_EQUAL("test", (const char *)hashtable_get (hashtable, "args1"));
|
||||
STRCMP_EQUAL("PRIVMSG #channel :",
|
||||
(const char *)hashtable_get (hashtable, "msg2"));
|
||||
STRCMP_EQUAL("", (const char *)hashtable_get (hashtable, "args2"));
|
||||
STRCMP_EQUAL("PRIVMSG #channel :line 3",
|
||||
(const char *)hashtable_get (hashtable, "msg3"));
|
||||
STRCMP_EQUAL("line 3", (const char *)hashtable_get (hashtable, "args3"));
|
||||
|
||||
/* 005: no split */
|
||||
hashtable = irc_message_split (server, "005 nick " MSG_005);
|
||||
CHECK(hashtable);
|
||||
|
||||
Reference in New Issue
Block a user