From fdbff48808ee65480bc7915c55d154e6cb46b00e Mon Sep 17 00:00:00 2001 From: Chaouki Dhib Date: Sun, 4 Jul 2021 18:49:30 +0200 Subject: Core/Movement: Fix movement handler crash during ReadMovementInfo check (#26644) * Core/Movement: Fix movement handler crash during ReadMovementInfo check * fix noph build * add an assert --- src/server/game/Server/WorldSession.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 30be1c9e4ad..e3c9ad3569c 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -38,6 +38,7 @@ #include "Map.h" #include "Metric.h" #include "MoveSpline.h" +#include "ObjectAccessor.h" #include "ObjectMgr.h" #include "Opcodes.h" #include "OutdoorPvPMgr.h" @@ -926,7 +927,8 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi) mi->RemoveMovementFlag((maskToRemove)); #endif - Unit* mover = GetGameClient()->GetActivelyMovedUnit(); + Unit* mover = GetPlayer()->GetGUID() == mi->guid ? GetPlayer() : ObjectAccessor::GetUnit(*GetPlayer(), mi->guid); + ASSERT(mover, "if the server allows this unit to be moved by the client, the unit should still exist!"); if (!GetPlayer()->GetVehicleBase() || !(GetPlayer()->GetVehicle()->GetVehicleInfo()->Flags & VEHICLE_FLAG_FIXED_POSITION)) REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ROOT), MOVEMENTFLAG_ROOT); -- cgit v1.2.3