Fix nullptr dereference

If client sends TAGMSG while server is not connected
This commit is contained in:
Alexey Sokolov
2025-06-23 22:52:34 +01:00
parent 7b7f691213
commit 4b12c0dc3c
2 changed files with 12 additions and 1 deletions

View File

@@ -1657,7 +1657,7 @@ bool CClient::OnTagMessage(CTargetMessage& Message) {
if (m_pNetwork) {
AddBuffer(Message);
EchoMessage(Message);
if (GetIRCSock()->HasMessageTagCap()) {
if (GetIRCSock() && GetIRCSock()->HasMessageTagCap()) {
PutIRCStripping(Message);
}
}

View File

@@ -1210,5 +1210,16 @@ TEST_F(ZNCTest, Issue1960) {
ircd2.ReadUntil("@foo TAGMSG #bar");
}
TEST_F(ZNCTest, DisconnectedTagmsgCrash) {
auto znc = Run();
auto ircd = ConnectIRCd();
auto client = LoginClient();
client.Write("znc disconnect");
client.ReadUntil("Disconnected");
client.Write("@foo TAGMSG #foo");
client.Write("znc help");
client.ReadUntil("AddServer");
}
} // namespace
} // namespace znc_inttest