summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNei <ailin.nemui@gmail.com>2017-10-20 13:16:27 +0000
committerailin-nemui <ailin-nemui@users.noreply.github.com>2017-10-20 15:22:32 +0200
commitc46bed1e17185d4a20a0f382cf5253bf91829543 (patch)
tree3f0c0551e7936b79a6462800e96f372ce6fd9b46 /src
parent3c2ae68073de310063e43408e46f8d67cbc9aabd (diff)
parent0840eaec7bf56740029aae614e393f8cf76f6946 (diff)
downloadirssi-c46bed1e17185d4a20a0f382cf5253bf91829543.zip
Merge branch 'fix-gl-15' into 'security'
Don't proceed with cmd_msg if there was an error splitting msg See merge request irssi/irssi!21
Diffstat (limited to 'src')
-rw-r--r--src/core/recode.c7
-rw-r--r--src/irc/core/irc-servers.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/src/core/recode.c b/src/core/recode.c
index d001a46a..d3fc91e7 100644
--- a/src/core/recode.c
+++ b/src/core/recode.c
@@ -198,7 +198,12 @@ char **recode_split(const SERVER_REC *server, const char *str,
int n = 0;
char **ret;
- g_return_val_if_fail(str != NULL, NULL);
+ g_warn_if_fail(str != NULL);
+ if (str == NULL) {
+ ret = g_new(char *, 1);
+ ret[0] = NULL;
+ return ret;
+ }
if (settings_get_bool("recode")) {
to = find_conversion(server, target);
diff --git a/src/irc/core/irc-servers.c b/src/irc/core/irc-servers.c
index 3117e345..4eaab712 100644
--- a/src/irc/core/irc-servers.c
+++ b/src/irc/core/irc-servers.c
@@ -116,11 +116,14 @@ static char **split_line(const SERVER_REC *server, const char *line,
* the code much simpler. It's worth it.
*/
len -= strlen(recoded_start) + strlen(recoded_end);
+ g_warn_if_fail(len > 0);
if (len <= 0) {
/* There is no room for anything. */
g_free(recoded_start);
g_free(recoded_end);
- return NULL;
+ lines = g_new(char *, 1);
+ lines[0] = NULL;
+ return lines;
}
lines = recode_split(server, line, target, len, onspace);