aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Addons/AddonMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-07-15 17:47:35 +0200
committerShauren <shauren.trinity@gmail.com>2019-07-15 17:47:35 +0200
commitcd3d317ebf74c4bd2b9a806e4463e2d0ae730a3b (patch)
treed3f30d4c45ed15a4393bf5dba23db039ac15f6cf /src/server/game/Addons/AddonMgr.cpp
parent37f69825c445f3c973172792e1abc0bdc9f02dde (diff)
Core/Addons: Improve WorldSession::ReadAddonsInfo
* Only allow built-in addons to be marked as secure * Better protect against malformed packets
Diffstat (limited to 'src/server/game/Addons/AddonMgr.cpp')
-rw-r--r--src/server/game/Addons/AddonMgr.cpp10
1 files changed, 4 insertions, 6 deletions
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)