summaryrefslogtreecommitdiff
path: root/src/irc/core
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2017-10-19 11:17:56 +0200
committerLemonBoy <thatlemon@gmail.com>2017-10-19 11:17:56 +0200
commit45dfe2ba3889c5dc23a9bea3214f158cc651a043 (patch)
treeccf215f6fa9d3f1a2efe416a67f57134ae002a4b /src/irc/core
parent28d0b8c74602db0474c78ccbe17ae1ba03fcf665 (diff)
downloadirssi-45dfe2ba3889c5dc23a9bea3214f158cc651a043.zip
Prevent a OOB read when parsing IRCNet ! channels
Make sure the string has enough data. Fixes #16
Diffstat (limited to 'src/irc/core')
-rw-r--r--src/irc/core/channel-events.c2
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);