aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellHandler.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-19 16:26:22 -0500
committermegamage <none@none>2009-08-19 16:26:22 -0500
commite954904e6d0f026254d4ab93c6b4d051cc7253c6 (patch)
tree24374c0508ddd062dccb7b30bb7455eb9a191b3c /src/game/SpellHandler.cpp
parentd9ed49749db71f971c650c109d5bc1ce8af5d8ad (diff)
[8378] Use exceptions instead of explicit size checking for each packet Author: arrai
CHECK_PACKET_SIZE was pretty error prone; once it was forgotten mangosd could crash due to the asserts in ByteBuffer.h. That was exploitable by malicious players. Furthermore, there were duplicate checks: Additionally to CHECK_PACKET_SIZE, the ByteBuffer assertions keept an eye on not exceeding the packet boundaries - just to crash the server for sure in such a case. To prevent memory leaks or other undesirable states, please read in every handler all variables _before_ doing any concrete handling. --HG-- branch : trunk
Diffstat (limited to 'src/game/SpellHandler.cpp')
-rw-r--r--src/game/SpellHandler.cpp23
1 files changed, 0 insertions, 23 deletions
diff --git a/src/game/SpellHandler.cpp b/src/game/SpellHandler.cpp
index ab338f932ab..ae29503e753 100644
--- a/src/game/SpellHandler.cpp
+++ b/src/game/SpellHandler.cpp
@@ -35,8 +35,6 @@
void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
{
// TODO: add targets.read() check
- CHECK_PACKET_SIZE(recvPacket,1+1+1+4+8+4+1);
-
Player* pUser = _player;
// ignore for remote control state
@@ -162,8 +160,6 @@ void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket)
{
- CHECK_PACKET_SIZE(recvPacket,1+1);
-
sLog.outDetail("WORLD: CMSG_OPEN_ITEM packet, data length = %i",(uint32)recvPacket.size());
Player* pUser = _player;
@@ -242,8 +238,6 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGameObjectUseOpcode( WorldPacket & recv_data )
{
- CHECK_PACKET_SIZE(recv_data, 8);
-
uint64 guid;
recv_data >> guid;
@@ -267,8 +261,6 @@ void WorldSession::HandleGameObjectUseOpcode( WorldPacket & recv_data )
void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket)
{
- CHECK_PACKET_SIZE(recvPacket,8);
-
uint64 guid;
recvPacket >> guid;
@@ -290,8 +282,6 @@ void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket)
void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
{
- CHECK_PACKET_SIZE(recvPacket,1+4+1);
-
uint32 spellId;
uint8 cast_count, unk_flags;
recvPacket >> cast_count;
@@ -365,8 +355,6 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket)
{
- CHECK_PACKET_SIZE(recvPacket,5);
-
// increments with every CANCEL packet, don't use for now
uint8 counter;
uint32 spellId;
@@ -379,8 +367,6 @@ void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket)
void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket)
{
- CHECK_PACKET_SIZE(recvPacket,4);
-
uint32 spellId;
recvPacket >> spellId;
@@ -408,8 +394,6 @@ void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket)
void WorldSession::HandlePetCancelAuraOpcode( WorldPacket& recvPacket)
{
- CHECK_PACKET_SIZE(recvPacket, 8+4);
-
uint64 guid;
uint32 spellId;
@@ -464,8 +448,6 @@ void WorldSession::HandleCancelAutoRepeatSpellOpcode( WorldPacket& /*recvPacket*
void WorldSession::HandleCancelChanneling( WorldPacket & /*recv_data */)
{
/*
- CHECK_PACKET_SIZE(recv_data, 4);
-
uint32 spellid;
recv_data >> spellid;
*/
@@ -473,8 +455,6 @@ void WorldSession::HandleCancelChanneling( WorldPacket & /*recv_data */)
void WorldSession::HandleTotemDestroyed( WorldPacket& recvPacket)
{
- CHECK_PACKET_SIZE(recvPacket, 1);
-
// ignore for remote control state
if(_player->m_mover != _player)
return;
@@ -512,8 +492,6 @@ void WorldSession::HandleSelfResOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleSpellClick( WorldPacket & recv_data )
{
- CHECK_PACKET_SIZE(recv_data, 8);
-
uint64 guid;
recv_data >> guid;
@@ -541,7 +519,6 @@ void WorldSession::HandleSpellClick( WorldPacket & recv_data )
void WorldSession::HandleMirrrorImageDataRequest( WorldPacket & recv_data )
{
sLog.outDebug("WORLD: CMSG_GET_MIRRORIMAGE_DATA");
- CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid;
recv_data >> guid;