From 8414ce02e350d8ce55f08f273c997b627f9f9124 Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Sat, 4 Jun 2022 14:00:16 -0400 Subject: [PATCH] [Cleanup] Add Validation to varchar number item fields. (#2241) - combateffects and charmfileid were varchar and have no default value, so if you passed '' shared memory would fail, default these to 0 to prevent this. --- common/shareddb.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/shareddb.cpp b/common/shareddb.cpp index c334b984c..c07556d81 100644 --- a/common/shareddb.cpp +++ b/common/shareddb.cpp @@ -1119,7 +1119,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_ item.Attack = std::stoi(row[ItemField::attack]); item.Avoidance = static_cast(EQ::Clamp(std::stoi(row[ItemField::avoidance]), -128, 127)); item.Clairvoyance = std::stoul(row[ItemField::clairvoyance]); - item.CombatEffects = static_cast(EQ::Clamp(std::stoi(row[ItemField::combateffects]), -128, 127)); + item.CombatEffects = StringIsNumber(row[ItemField::combateffects]) ? static_cast(EQ::Clamp(std::stoi(row[ItemField::combateffects]), -128, 127)) : 0; item.DamageShield = std::stoi(row[ItemField::damageshield]); item.DotShielding = std::stoi(row[ItemField::dotshielding]); item.DSMitigation = std::stoul(row[ItemField::dsmitigation]); @@ -1256,7 +1256,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_ item.EvolvingMax = static_cast(std::stoul(row[ItemField::evomax])); // Scripting - item.CharmFileID = std::stoul(row[ItemField::charmfileid]); + item.CharmFileID = StringIsNumber(row[ItemField::charmfileid]) ? std::stoul(row[ItemField::charmfileid]) : 0; strn0cpy(item.CharmFile, row[ItemField::charmfile], sizeof(item.CharmFile)); strn0cpy(item.Filename, row[ItemField::filename], sizeof(item.Filename)); item.ScriptFileID = std::stoul(row[ItemField::scriptfileid]);