From 28a9690a64a41c7ee4c22546b60b0ddec65e906b Mon Sep 17 00:00:00 2001 From: Lion Kortlepel Date: Sun, 23 Jun 2024 21:58:32 +0200 Subject: [PATCH] validate Ot packets --- src/TServer.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/TServer.cpp b/src/TServer.cpp index db1541a..f0411bf 100644 --- a/src/TServer.cpp +++ b/src/TServer.cpp @@ -403,13 +403,21 @@ void TServer::ParseVehicle(TClient& c, const std::string& Pckt, TNetwork& Networ } return; } - case 't': + case 't': { beammp_trace(std::string(("got 'Ot' packet: '")) + Packet + ("' (") + std::to_string(Packet.size()) + (")")); + auto MaybePidVid = GetPidVid(Data.substr(0, Data.find(':', 1))); + if (MaybePidVid) { + std::tie(PID, VID) = MaybePidVid.value(); + } + if (PID != -1 && VID != -1 && PID == c.GetID()) { + Network.SendToAll(&c, StringToVector(Packet), false, true); + } + return; + } + case 'm': { Network.SendToAll(&c, StringToVector(Packet), false, true); return; - case 'm': - Network.SendToAll(&c, StringToVector(Packet), true, true); - return; + } default: beammp_trace(std::string(("possibly not implemented: '") + Packet + ("' (") + std::to_string(Packet.size()) + (")"))); return;