diff --git a/src/game/Anticheat/module/Warden/warden.cpp b/src/game/Anticheat/module/Warden/warden.cpp index 68c0a172c7..67a596e377 100644 --- a/src/game/Anticheat/module/Warden/warden.cpp +++ b/src/game/Anticheat/module/Warden/warden.cpp @@ -418,6 +418,14 @@ void Warden::HandlePacket(WorldPacket& recvData) uint32 checksum; recvData >> length >> checksum; + if (length > (recvData.size() - (recvData.rpos() + 1))) + { + recvData.rpos(recvData.wpos()); + _anticheat->RecordCheatInternal(CheatType::CHEAT_TYPE_WARDEN, "Packet checksum length fail"); + _session->KickPlayer(); + return; + } + if (BuildChecksum(recvData.contents() + recvData.rpos(), length) != checksum) { recvData.rpos(recvData.wpos());