aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MovementHandler.cpp
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2012-03-16 18:15:08 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2012-03-16 18:15:08 +0100
commit65453620e8b9775507d9d4c895f485e639f16b07 (patch)
treebddf0d8bde0d6725723c76617c7560431ec683fe /src/server/game/Handlers/MovementHandler.cpp
parentcca93c7a22b13bbfb6da5c895f6aa94091bcbfdc (diff)
Core/Movement: Do not process server side relocation if reading movementinfo from client resulted in violations (= hacking).
Diffstat (limited to 'src/server/game/Handlers/MovementHandler.cpp')
-rwxr-xr-xsrc/server/game/Handlers/MovementHandler.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 7d1233c8f70..55c55ffb246 100755
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -278,6 +278,14 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data)
return;
}
+ //! If some anti-cheat checks in WorldSession::ReadMovementInfo failed, do not process
+ //! the change of movement server-sided.
+ if (movementInfo.Violated)
+ {
+ recv_data.rfinish();
+ return;
+ }
+
/* handle special cases */
if (movementInfo.flags & MOVEMENTFLAG_ONTRANSPORT)
{
@@ -485,9 +493,16 @@ void WorldSession::HandleMoveNotActiveMover(WorldPacket &recv_data)
recv_data.readPackGUID(old_mover_guid);
MovementInfo mi;
- mi.guid = old_mover_guid;
ReadMovementInfo(recv_data, &mi);
+ if (mi.Violated)
+ {
+ recv_data.rfinish();
+ return;
+ }
+
+ mi.guid = old_mover_guid;
+
_player->m_movementInfo = mi;
}
@@ -513,6 +528,13 @@ void WorldSession::HandleMoveKnockBackAck(WorldPacket & recv_data)
MovementInfo movementInfo;
ReadMovementInfo(recv_data, &movementInfo);
+
+ if (movementInfo.Violated)
+ {
+ recv_data.rfinish();
+ return;
+ }
+
_player->m_movementInfo = movementInfo;
WorldPacket data(MSG_MOVE_KNOCK_BACK, 66);
@@ -571,3 +593,4 @@ void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data)
_player->SummonIfPossible(agree);
}
+#undef IF_VIOLATED_RETURN \ No newline at end of file