diff options
author | jackpoz <giacomopoz@gmail.com> | 2013-09-21 10:58:21 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2013-09-21 10:58:21 +0200 |
commit | 6f9851ec136b1ced741da0e578801a519bbf3a3c (patch) | |
tree | efb529fa95425325ec7077319198dccc77bcc3e4 | |
parent | 1ae6538ea6d0537381f9f3c52471a7c782bc5a9e (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.cpp | 4 |
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) { |