From 3577afcfaf32985ec2cd433d16056db4d2a546b2 Mon Sep 17 00:00:00 2001 From: Nay Date: Fri, 3 Aug 2012 18:54:37 +0100 Subject: Core/WorldSession: Bypass assigned handler restriction if .debug send opcode command is used --- src/server/game/Server/WorldSession.cpp | 11 +++++++---- src/server/game/Server/WorldSession.h | 2 +- src/server/scripts/Commands/cs_debug.cpp | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 518a3743d66..7e7d75b0428 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -181,7 +181,7 @@ uint32 WorldSession::GetGuidLow() const } /// Send a packet to the client -void WorldSession::SendPacket(WorldPacket const* packet) +void WorldSession::SendPacket(WorldPacket const* packet, bool forced /*= false*/) { if (!m_Socket) return; @@ -192,10 +192,13 @@ void WorldSession::SendPacket(WorldPacket const* packet) return; } - if (!opcodeTable[packet->GetOpcode()]) + if (!forced) { - sLog->outError("Prevented sending disabled opcode %d (hex 0x%04X)", packet->GetOpcode(), packet->GetOpcode()); - return; + if (!opcodeTable[packet->GetOpcode()]) + { + sLog->outError("Prevented sending disabled opcode %d (hex 0x%04X)", packet->GetOpcode(), packet->GetOpcode()); + return; + } } #ifdef TRINITY_DEBUG diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 5a8a8da04aa..c0b2fb7e12b 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -236,7 +236,7 @@ class WorldSession void ReadMovementInfo(WorldPacket& data, MovementInfo* mi); void WriteMovementInfo(WorldPacket &data, MovementInfo* mi); - void SendPacket(WorldPacket const* packet); + void SendPacket(WorldPacket const* packet, bool forced = false); void SendNotification(const char *format, ...) ATTR_PRINTF(2, 3); void SendNotification(uint32 string_id, ...); void SendPetNameInvalid(uint32 error, const std::string& name, DeclinedName *declinedName); diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 6accc96260b..874c7ab81b0 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -416,7 +416,7 @@ public: } sLog->outDebug(LOG_FILTER_NETWORKIO, "Sending opcode %u", data.GetOpcode()); data.hexlike(); - player->GetSession()->SendPacket(&data); + player->GetSession()->SendPacket(&data, true); handler->PSendSysMessage(LANG_COMMAND_OPCODESENT, data.GetOpcode(), unit->GetName()); return true; } -- cgit v1.2.3