aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Addons
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
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')
-rw-r--r--src/server/game/Addons/AddonMgr.cpp10
-rw-r--r--src/server/game/Addons/AddonMgr.h19
2 files changed, 7 insertions, 22 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)
diff --git a/src/server/game/Addons/AddonMgr.h b/src/server/game/Addons/AddonMgr.h
index d6d1a6e90c9..89c4575591d 100644
--- a/src/server/game/Addons/AddonMgr.h
+++ b/src/server/game/Addons/AddonMgr.h
@@ -21,20 +21,7 @@
#include "Define.h"
#include <string>
-#include <list>
-
-struct AddonInfo
-{
- AddonInfo(const std::string& name, uint8 enabled, uint32 crc, uint8 state, bool crcOrPubKey)
- : Name(name), Enabled(enabled), CRC(crc), State(state), UsePublicKeyOrCRC(crcOrPubKey)
- { }
-
- std::string Name;
- uint8 Enabled;
- uint32 CRC;
- uint8 State;
- bool UsePublicKeyOrCRC;
-};
+#include <vector>
struct SavedAddon
{
@@ -60,10 +47,10 @@ struct BannedAddon
namespace AddonMgr
{
void LoadFromDB();
- void SaveAddon(AddonInfo const& addon);
+ void SaveAddon(std::string const& name, uint32 publicKeyCrc);
SavedAddon const* GetAddonInfo(const std::string& name);
- typedef std::list<BannedAddon> BannedAddonList;
+ typedef std::vector<BannedAddon> BannedAddonList;
BannedAddonList const* GetBannedAddons();
}