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.
This commit is contained in:
Machiavelli
2011-06-26 21:27:10 +02:00
parent 5c0c2ea873
commit ad81d4132c
+6
View File
@@ -754,6 +754,12 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
if (mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION)) if (mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION))
data >> mi->splineElevation; 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) void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi)