diff options
author | LemonBoy <thatlemon@gmail.com> | 2017-10-19 11:17:56 +0200 |
---|---|---|
committer | LemonBoy <thatlemon@gmail.com> | 2017-10-19 11:17:56 +0200 |
commit | 45dfe2ba3889c5dc23a9bea3214f158cc651a043 (patch) | |
tree | ccf215f6fa9d3f1a2efe416a67f57134ae002a4b /src | |
parent | 28d0b8c74602db0474c78ccbe17ae1ba03fcf665 (diff) | |
download | irssi-45dfe2ba3889c5dc23a9bea3214f158cc651a043.zip |
Prevent a OOB read when parsing IRCNet ! channels
Make sure the string has enough data.
Fixes #16
Diffstat (limited to 'src')
-rw-r--r-- | src/irc/core/channel-events.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/irc/core/channel-events.c b/src/irc/core/channel-events.c index 6cb9b088..b0bddab2 100644 --- a/src/irc/core/channel-events.c +++ b/src/irc/core/channel-events.c @@ -37,7 +37,7 @@ static void check_join_failure(IRC_SERVER_REC *server, const char *channel) channel++; /* server didn't understand !channels */ chanrec = channel_find(SERVER(server), channel); - if (chanrec == NULL && channel[0] == '!') { + if (chanrec == NULL && channel[0] == '!' && strlen(channel) > 6) { /* it probably replied with the full !channel name, find the channel with the short name.. */ chan2 = g_strdup_printf("!%s", channel+6); |