aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Server/WorldSession.cpp6
1 files changed, 6 insertions, 0 deletions
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)