From cd3d317ebf74c4bd2b9a806e4463e2d0ae730a3b Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 15 Jul 2019 17:47:35 +0200 Subject: Core/Addons: Improve WorldSession::ReadAddonsInfo * Only allow built-in addons to be marked as secure * Better protect against malformed packets --- src/server/game/Addons/AddonMgr.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/server/game/Addons/AddonMgr.cpp') diff --git a/src/server/game/Addons/AddonMgr.cpp b/src/server/game/Addons/AddonMgr.cpp index d8fd909c7fc..209e1a5663c 100644 --- a/src/server/game/Addons/AddonMgr.cpp +++ b/src/server/game/Addons/AddonMgr.cpp @@ -66,7 +66,7 @@ void LoadFromDB() TC_LOG_INFO("server.loading", ">> Loaded 0 known addons. DB table `addons` is empty!"); oldMSTime = getMSTime(); - result = CharacterDatabase.Query("SELECT id, name, version, UNIX_TIMESTAMP(timestamp) FROM banned_addons"); + result = CharacterDatabase.Query("SELECT id, name, version, UNIX_TIMESTAMP(timestamp) FROM banned_addons ORDER BY timestamp"); if (result) { uint32 count = 0; @@ -96,18 +96,16 @@ void LoadFromDB() } } -void SaveAddon(AddonInfo const& addon) +void SaveAddon(std::string const& name, uint32 publicKeyCrc) { - std::string name = addon.Name; - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ADDON); stmt->setString(0, name); - stmt->setUInt32(1, addon.CRC); + stmt->setUInt32(1, publicKeyCrc); CharacterDatabase.Execute(stmt); - m_knownAddons.push_back(SavedAddon(addon.Name, addon.CRC)); + m_knownAddons.emplace_back(name, publicKeyCrc); } SavedAddon const* GetAddonInfo(const std::string& name) -- cgit v1.2.3