From ad81d4132c7df0741c6396697cfb32e0f1c3706c Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sun, 26 Jun 2011 21:27:10 +0200 Subject: Core/Packets: Remove MOVEMENTFLAG_ROOT flag from movementinfo that is sent from client to server. This flag is not valid in this case and is a packet spoofing attempt. When used in conjunction with any of the moving movement flags such as MOVEMENTFLAG_FORWARD this will freeze surrounding clients that receive the cheater's movementinfo. Thanks to Dvlpr for help with research. --- src/server/game/Server/WorldSession.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index d3c23c6e5c3..7a00d92a71c 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -754,6 +754,12 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi) if (mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION)) data >> mi->splineElevation; + + // This must be a packet spoofing attempt. MOVEMENTFLAG_ROOT sent from the client is not valid, + // and when used in conjunction with any of the moving movement flags such as MOVEMENTFLAG_FORWARD + // it will freeze clients that receive this player's movement info. + if (mi->HasMovementFlag(MOVEMENTFLAG_ROOT)) + mi->flags &= ~MOVEMENTFLAG_ROOT; } void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi) -- cgit v1.2.3