aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2013-09-21 10:58:21 +0200
committerjackpoz <giacomopoz@gmail.com>2013-09-21 10:58:21 +0200
commit6f9851ec136b1ced741da0e578801a519bbf3a3c (patch)
treeefb529fa95425325ec7077319198dccc77bcc3e4
parent1ae6538ea6d0537381f9f3c52471a7c782bc5a9e (diff)
Core/PathGenerator: Fix conditional jump on uninitialized value
Fix conditional jump on uninitialized value in PathGenerator::GetNavTerrain() by checking the result of getLiquidStatus() before accessing the LiquidData, uninitialized in case there's no water at all. Valgrind log: Conditional jump or move depends on uninitialised value(s) at : PathGenerator::GetNavTerrain(float, float, float) (PathGenerator.cpp:553) by : PathGenerator::UpdateFilter() (PathGenerator.cpp:542) by : PathGenerator::CreateFilter() (PathGenerator.cpp:530) by : PathGenerator::PathGenerator(Unit const*) (PathGenerator.cpp:46) by : Spell::Spell(Unit*, SpellInfo const*, TriggerCastFlags, unsigned long, bool) (Spell.cpp:493) by : Unit::CastSpell(SpellCastTargets const&, SpellInfo const*, CustomSpellValues const*, TriggerCastFlags, Item*, AuraEffect const*, unsigned long) (Unit.cpp:846) by : Unit::CastSpell(Unit*, SpellInfo const*, TriggerCastFlags, Item*, AuraEffect const*, unsigned long) (Unit.cpp:882) by : Unit::CastSpell(Unit*, unsigned int, TriggerCastFlags, Item*, AuraEffect const*, unsigned long) (Unit.cpp:870) by : Unit::CastSpell(Unit*, unsigned int, bool, Item*, AuraEffect const*, unsigned long) (Unit.cpp:858) by : Player::SendInitialPacketsAfterAddToMap() (Player.cpp:22580) by : WorldSession::HandleMoveWorldportAckOpcode() (MovementHandler.cpp:121) by : WorldSession::HandleMoveWorldportAckOpcode(WorldPacket&) (MovementHandler.cpp:37)
-rw-r--r--src/server/game/Movement/PathGenerator.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp
index ed30b59f0ec..c902eb850f6 100644
--- a/src/server/game/Movement/PathGenerator.cpp
+++ b/src/server/game/Movement/PathGenerator.cpp
@@ -548,7 +548,9 @@ void PathGenerator::UpdateFilter()
NavTerrain PathGenerator::GetNavTerrain(float x, float y, float z)
{
LiquidData data;
- _sourceUnit->GetBaseMap()->getLiquidStatus(x, y, z, MAP_ALL_LIQUIDS, &data);
+ ZLiquidStatus liquidStatus = _sourceUnit->GetBaseMap()->getLiquidStatus(x, y, z, MAP_ALL_LIQUIDS, &data);
+ if (liquidStatus == LIQUID_MAP_NO_WATER)
+ return NAV_GROUND;
switch (data.type_flags)
{