mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-20 06:59:46 -04:00
Core/DBLayer: Prevent using prepared statements on wrong database
(cherry picked from commit e8e89f58fb)
# Conflicts:
# src/server/bnetserver/REST/LoginRESTService.cpp
# src/server/bnetserver/Server/Session.cpp
# src/server/database/Database/DatabaseWorkerPool.cpp
# src/server/database/Database/Implementation/HotfixDatabase.h
# src/server/database/Database/MySQLConnection.cpp
# src/server/database/Database/MySQLConnection.h
# src/server/database/Database/PreparedStatement.cpp
# src/server/database/Database/PreparedStatement.h
# src/server/database/Database/QueryHolder.cpp
# src/server/database/Database/SQLOperation.h
# src/server/database/Database/Transaction.h
# src/server/game/Accounts/BattlenetAccountMgr.cpp
# src/server/game/Achievements/AchievementMgr.cpp
# src/server/game/AuctionHouse/AuctionHouseMgr.cpp
# src/server/game/AuctionHouseBot/AuctionHouseBot.cpp
# src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
# src/server/game/BattlePets/BattlePetMgr.cpp
# src/server/game/Battlegrounds/ArenaTeam.cpp
# src/server/game/BlackMarket/BlackMarketMgr.cpp
# src/server/game/Chat/Channels/Channel.cpp
# src/server/game/Entities/Corpse/Corpse.cpp
# src/server/game/Entities/Creature/Creature.cpp
# src/server/game/Entities/GameObject/GameObject.cpp
# src/server/game/Entities/Item/Item.cpp
# src/server/game/Entities/Pet/Pet.cpp
# src/server/game/Entities/Player/CollectionMgr.cpp
# src/server/game/Entities/Player/Player.cpp
# src/server/game/Garrison/Garrison.cpp
# src/server/game/Globals/ObjectMgr.cpp
# src/server/game/Groups/Group.cpp
# src/server/game/Guilds/Guild.cpp
# src/server/game/Guilds/GuildFinderMgr.cpp
# src/server/game/Guilds/GuildMgr.cpp
# src/server/game/Handlers/AuctionHouseHandler.cpp
# src/server/game/Handlers/CharacterHandler.cpp
# src/server/game/Handlers/ItemHandler.cpp
# src/server/game/Handlers/MailHandler.cpp
# src/server/game/Handlers/MiscHandler.cpp
# src/server/game/Handlers/PetitionsHandler.cpp
# src/server/game/Handlers/SpellHandler.cpp
# src/server/game/Handlers/TicketHandler.cpp
# src/server/game/Loot/Loot.cpp
# src/server/game/Mails/Mail.cpp
# src/server/game/Maps/Map.cpp
# src/server/game/Movement/Waypoints/WaypointManager.cpp
# src/server/game/OutdoorPvP/OutdoorPvP.cpp
# src/server/game/Pools/PoolMgr.cpp
# src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp
# src/server/game/Reputation/ReputationMgr.cpp
# src/server/game/Scenarios/InstanceScenario.cpp
# src/server/game/Server/WorldSession.cpp
# src/server/game/Server/WorldSocket.cpp
# src/server/game/Spells/SpellHistory.cpp
# src/server/game/Support/SupportMgr.cpp
# src/server/game/Tools/PlayerDump.cpp
# src/server/game/World/World.cpp
# src/server/scripts/Commands/cs_account.cpp
# src/server/scripts/Commands/cs_ban.cpp
# src/server/scripts/Commands/cs_battlenet_account.cpp
# src/server/scripts/Commands/cs_group.cpp
# src/server/scripts/Commands/cs_lfg.cpp
# src/server/scripts/Commands/cs_list.cpp
# src/server/scripts/Commands/cs_message.cpp
# src/server/scripts/Commands/cs_misc.cpp
# src/server/scripts/Commands/cs_npc.cpp
# src/server/scripts/Commands/cs_tele.cpp
# src/server/scripts/Commands/cs_wp.cpp
# src/server/shared/DataStores/DB2DatabaseLoader.cpp
# src/server/shared/Realm/RealmList.cpp
This commit is contained in:
@@ -125,7 +125,7 @@ public:
|
||||
{
|
||||
if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE))
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PVPSTATS_FACTIONS_OVERALL);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PVPSTATS_FACTIONS_OVERALL);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
|
||||
if (result)
|
||||
@@ -1212,7 +1212,7 @@ public:
|
||||
std::string itemName = itemNameStr+1;
|
||||
WorldDatabase.EscapeString(itemName);
|
||||
|
||||
PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_ITEM_TEMPLATE_BY_NAME);
|
||||
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_ITEM_TEMPLATE_BY_NAME);
|
||||
stmt->setString(0, itemName);
|
||||
PreparedQueryResult result = WorldDatabase.Query(stmt);
|
||||
|
||||
@@ -1530,7 +1530,7 @@ public:
|
||||
Player* target;
|
||||
ObjectGuid targetGuid;
|
||||
std::string targetName;
|
||||
PreparedStatement* stmt = nullptr;
|
||||
CharacterDatabasePreparedStatement* stmt = nullptr;
|
||||
|
||||
// To make sure we get a target, we convert our guid to an omniversal...
|
||||
ObjectGuid parseGUID(HighGuid::Player, uint32(atoul(args)));
|
||||
@@ -1686,10 +1686,10 @@ public:
|
||||
}
|
||||
|
||||
// Query the prepared statement for login data
|
||||
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
|
||||
stmt->setInt32(0, int32(realm.Id.Realm));
|
||||
stmt->setUInt32(1, accId);
|
||||
PreparedQueryResult result = LoginDatabase.Query(stmt);
|
||||
LoginDatabasePreparedStatement* stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
|
||||
stmt2->setInt32(0, int32(realm.Id.Realm));
|
||||
stmt2->setUInt32(1, accId);
|
||||
PreparedQueryResult result = LoginDatabase.Query(stmt2);
|
||||
|
||||
if (result)
|
||||
{
|
||||
@@ -1732,7 +1732,7 @@ public:
|
||||
std::string nameLink = handler->playerLink(targetName);
|
||||
|
||||
// Returns banType, banTime, bannedBy, banreason
|
||||
PreparedStatement* stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
|
||||
stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
|
||||
stmt2->setUInt32(0, accId);
|
||||
PreparedQueryResult result2 = LoginDatabase.Query(stmt2);
|
||||
if (!result2)
|
||||
@@ -1754,9 +1754,9 @@ public:
|
||||
|
||||
|
||||
// Can be used to query data from Characters database
|
||||
stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP);
|
||||
stmt2->setUInt32(0, lowguid);
|
||||
PreparedQueryResult result4 = CharacterDatabase.Query(stmt2);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP);
|
||||
stmt->setUInt32(0, lowguid);
|
||||
PreparedQueryResult result4 = CharacterDatabase.Query(stmt);
|
||||
|
||||
if (result4)
|
||||
{
|
||||
@@ -1768,9 +1768,9 @@ public:
|
||||
if (gguid != 0)
|
||||
{
|
||||
// Guild Data - an own query, because it may not happen.
|
||||
PreparedStatement* stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED);
|
||||
stmt3->setUInt32(0, lowguid);
|
||||
PreparedQueryResult result5 = CharacterDatabase.Query(stmt3);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED);
|
||||
stmt->setUInt32(0, lowguid);
|
||||
PreparedQueryResult result5 = CharacterDatabase.Query(stmt);
|
||||
if (result5)
|
||||
{
|
||||
Field* fields5 = result5->Fetch();
|
||||
@@ -1878,9 +1878,9 @@ public:
|
||||
|
||||
// Mail Data - an own query, because it may or may not be useful.
|
||||
// SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?"
|
||||
PreparedStatement* stmt4 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
|
||||
stmt4->setUInt32(0, lowguid);
|
||||
PreparedQueryResult result6 = CharacterDatabase.Query(stmt4);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
|
||||
stmt->setUInt32(0, lowguid);
|
||||
PreparedQueryResult result6 = CharacterDatabase.Query(stmt);
|
||||
if (result6)
|
||||
{
|
||||
Field* fields = result6->Fetch();
|
||||
@@ -1967,7 +1967,7 @@ public:
|
||||
if (handler->HasLowerSecurity (target, targetGuid, true))
|
||||
return false;
|
||||
|
||||
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
|
||||
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
|
||||
std::string muteBy = "";
|
||||
if (handler->GetSession())
|
||||
muteBy = handler->GetSession()->GetPlayerName();
|
||||
@@ -2046,7 +2046,7 @@ public:
|
||||
target->GetSession()->m_muteTime = 0;
|
||||
}
|
||||
|
||||
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
|
||||
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
|
||||
stmt->setInt64(0, 0);
|
||||
stmt->setString(1, "");
|
||||
stmt->setString(2, "");
|
||||
@@ -2094,7 +2094,7 @@ public:
|
||||
// helper for mutehistory
|
||||
static bool HandleMuteInfoHelper(uint32 accountId, char const* accountName, ChatHandler *handler)
|
||||
{
|
||||
PreparedStatement *stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO);
|
||||
LoginDatabasePreparedStatement *stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO);
|
||||
stmt->setUInt32(0, accountId);
|
||||
PreparedQueryResult result = LoginDatabase.Query(stmt);
|
||||
|
||||
@@ -2564,7 +2564,7 @@ public:
|
||||
}
|
||||
|
||||
// If player found: delete his freeze aura
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA_FROZEN);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA_FROZEN);
|
||||
stmt->setUInt32(0, guid.GetCounter());
|
||||
CharacterDatabase.Execute(stmt);
|
||||
|
||||
@@ -2584,7 +2584,7 @@ public:
|
||||
static bool HandleListFreezeCommand(ChatHandler* handler, char const* /*args*/)
|
||||
{
|
||||
// Get names from DB
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_AURA_FROZEN);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_AURA_FROZEN);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
if (!result)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user