Fix crash when parsing incorrect channel modes sent by server.

Sometimes certain servers don't send a argument for modes which it
declared as ones which need an argument.

No released version is affected.

Close #1684
This commit is contained in:
Alexey Sokolov
2019-11-07 08:36:41 +00:00
parent b8b62a14ab
commit 16c849daac
2 changed files with 26 additions and 8 deletions

View File

@@ -331,7 +331,8 @@ TEST_F(IRCSockTest, OnPartMessage) {
}
TEST_F(IRCSockTest, StatusModes) {
m_pTestSock->ReadLine(":server 005 user PREFIX=(Yohv)!@%+ :are supported by this server");
m_pTestSock->ReadLine(
":server 005 user PREFIX=(Yohv)!@%+ :are supported by this server");
EXPECT_TRUE(m_pTestSock->IsPermMode('Y'));
EXPECT_TRUE(m_pTestSock->IsPermMode('o'));
@@ -547,3 +548,13 @@ TEST_F(IRCSockTest, StatusMsg) {
EXPECT_EQ(m_pTestChan->GetBuffer().GetLine(0, *m_pTestClient),
":someone PRIVMSG @#chan :hello ops");
}
TEST_F(IRCSockTest, ChanMode) {
// https://github.com/znc/znc/issues/1684
m_pTestSock->ReadLine(
":irc.znc.in 001 me :Welcome to the Internet Relay Network me");
m_pTestSock->ReadLine(
":irc.znc.in 005 me CHANMODES=be,f,lj,nti "
":are supported by this server");
m_pTestSock->ReadLine(":irc.znc.in 324 me #chan +ntf ");
}