update (module): Dereferencing NULL Exploit fix

So there is a "Dereferencing NULL" Exploit that will crash the server thru the anticheat module. That issue is now fixed. I will not be releasing details of that exploit. Just make sure the module is updated and you will not have that problem. Appears to only effect Azerothcore, the TC counter part is not affected.
This commit is contained in:
MDIC
2022-07-25 14:12:51 -04:00
parent d90752976f
commit c07658825f

View File

@@ -45,6 +45,7 @@ enum Spells
AnticheatMgr::AnticheatMgr() AnticheatMgr::AnticheatMgr()
{ {
uint32 _alertFrequency = 0;
} }
AnticheatMgr::~AnticheatMgr() AnticheatMgr::~AnticheatMgr()
@@ -169,6 +170,13 @@ void AnticheatMgr::TeleportPlaneHackDetection(Player* player, MovementInfo movem
if (!sConfigMgr->GetOption<bool>("Anticheat.DetectTelePlaneHack", true)) if (!sConfigMgr->GetOption<bool>("Anticheat.DetectTelePlaneHack", true))
return; return;
//Celestial Planetarium Observer Battle has a narrow path that false flags
if (player && GetWMOAreaTableEntryByTripple(5202, 0, 24083))
return;
if (player->HasAuraType(SPELL_AURA_WATER_WALK) || player->HasAuraType(SPELL_AURA_WATER_BREATHING) || player->HasAuraType(SPELL_AURA_GHOST))
return;
ObjectGuid key = player->GetGUID(); ObjectGuid key = player->GetGUID();
uint32 distance2D = (uint32)movementInfo.pos.GetExactDist2d(&m_Players[key].GetLastMovementInfo().pos); uint32 distance2D = (uint32)movementInfo.pos.GetExactDist2d(&m_Players[key].GetLastMovementInfo().pos);
@@ -178,13 +186,6 @@ void AnticheatMgr::TeleportPlaneHackDetection(Player* player, MovementInfo movem
if (!distance2D) if (!distance2D)
return; return;
//Celestial Planetarium Observer Battle has a narrow path that false flags
if (player && GetWMOAreaTableEntryByTripple(5202, 0, 24083))
return;
if (player->HasAuraType(SPELL_AURA_WATER_WALK) || player->HasAuraType(SPELL_AURA_WATER_BREATHING) || player->HasAuraType(SPELL_AURA_GHOST))
return;
if (m_Players[key].GetLastOpcode() == MSG_MOVE_JUMP) if (m_Players[key].GetLastOpcode() == MSG_MOVE_JUMP)
return; return;
@@ -287,8 +288,6 @@ void AnticheatMgr::ZAxisHackDetection(Player* player, MovementInfo movementInfo)
if (!sConfigMgr->GetOption<bool>("Anticheat.DetectZaxisHack", true)) if (!sConfigMgr->GetOption<bool>("Anticheat.DetectZaxisHack", true))
return; return;
ObjectGuid key = player->GetGUID();
// If he is flying we dont need to check // If he is flying we dont need to check
if (movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_FLYING)) if (movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_FLYING))
return; return;
@@ -307,6 +306,8 @@ void AnticheatMgr::ZAxisHackDetection(Player* player, MovementInfo movementInfo)
if (player->GetLiquidData().Status == LIQUID_MAP_ABOVE_WATER) if (player->GetLiquidData().Status == LIQUID_MAP_ABOVE_WATER)
return; return;
ObjectGuid key = player->GetGUID();
uint32 distance2D = (uint32)movementInfo.pos.GetExactDist2d(&m_Players[key].GetLastMovementInfo().pos); uint32 distance2D = (uint32)movementInfo.pos.GetExactDist2d(&m_Players[key].GetLastMovementInfo().pos);
// We don't need to check for a ignore z if the player hasn't moved // We don't need to check for a ignore z if the player hasn't moved