From 5864a2e151a18f95222fdb08784b5e7312c89e7f Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Mon, 27 Jun 2011 00:10:53 +0200 Subject: Core/Packets: Add some additional movementflag filtering to eliminate some packet spoof attempts. --- src/server/game/Server/WorldSession.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 7a00d92a71c..8fd4430a72c 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -760,6 +760,30 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi) // it will freeze clients that receive this player's movement info. if (mi->HasMovementFlag(MOVEMENTFLAG_ROOT)) mi->flags &= ~MOVEMENTFLAG_ROOT; + + // Cannot hover and jump at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_HOVER) && mi->HasMovementFlag(MOVEMENTFLAG_JUMPING)) + mi->flags &= ~MOVEMENTFLAG_JUMPING; + + // Cannot ascend and descend at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_ASCENDING) && mi->HasMovementFlag(MOVEMENTFLAG_DESCENDING)) + mi->flags &= ~(MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING); + + // Cannot move left and right at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_RIGHT)) + mi->flags &= ~(MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT); + + // Cannot strafe left and right at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_RIGHT)) + mi->flags &= ~(MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT); + + // Cannot pitch up and down at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_PITCH_UP) && mi->HasMovementFlag(MOVEMENTFLAG_PITCH_DOWN)) + mi->flags &= ~(MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN); + + // Cannot move forwards and backwards at the same time + if (mi->HasMovementFlag(MOVEMENTFLAG_FORWARD) && mi->HasMovementFlag(MOVEMENTFLAG_BACKWARD)) + mi->flags &= ~(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD); } void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi) -- cgit v1.2.3