diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-03-08 01:29:34 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-03-08 01:29:34 +0100 |
commit | ce35bfe113159c9600f96c4e37ce461735650627 (patch) | |
tree | daa17ff63abbb175da3879f527c1caca121ef736 /src | |
parent | 8cd1c9514f336da3d3d9436be554fc80edb6e761 (diff) |
Core/DataStores: Fixed out of bounds array access during loading TaxiNodes.db2 and added ASSERT for TaxiMaskSize for future versions
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 4 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 3f389d00e20..f6fb39fea75 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -225,6 +225,10 @@ void DB2Manager::LoadStores(std::string const& dataPath) // Initialize global taxinodes mask // include existed nodes that have at least single not spell base (scripted) path { + ASSERT(TaxiMaskSize >= ((sTaxiNodesStore.GetNumRows() - 1) / 8) + 1, + "TaxiMaskSize is not large enough to contain all taxi nodes! (current value %d, required %d)", + TaxiMaskSize, (((sTaxiNodesStore.GetNumRows() - 1) / 8) + 1)); + std::set<uint32> spellPaths; for (SpellEffectEntry const* sInfo : sSpellEffectStore) if (sInfo->Effect == SPELL_EFFECT_SEND_TAXI) diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 032d94425ef..6c333b70682 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -495,7 +495,7 @@ struct TaxiPathNodePtr typedef Path<TaxiPathNodePtr, TaxiPathNodeEntry const> TaxiPathNodeList; typedef std::vector<TaxiPathNodeList> TaxiPathNodesByPath; -#define TaxiMaskSize 114 +#define TaxiMaskSize 201 typedef uint8 TaxiMask[TaxiMaskSize]; #endif |