[8378] Use exceptions instead of explicit size checking for each packet

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.
This commit is contained in:
arrai 2009-08-15 22:06:35 +02:00
parent c26c7395a1
commit a24f39a36f
32 changed files with 129 additions and 741 deletions

View file

@ -30,8 +30,6 @@ void WorldSession::HandleInspectArenaTeamsOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug("MSG_INSPECT_ARENA_TEAMS"); sLog.outDebug("MSG_INSPECT_ARENA_TEAMS");
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
sLog.outDebug("Inspect Arena stats (GUID: %u TypeId: %u)", GUID_LOPART(guid),GuidHigh2TypeId(GUID_HIPART(guid))); sLog.outDebug("Inspect Arena stats (GUID: %u TypeId: %u)", GUID_LOPART(guid),GuidHigh2TypeId(GUID_HIPART(guid)));
@ -53,8 +51,6 @@ void WorldSession::HandleArenaTeamQueryOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug( "WORLD: Received CMSG_ARENA_TEAM_QUERY" ); sLog.outDebug( "WORLD: Received CMSG_ARENA_TEAM_QUERY" );
CHECK_PACKET_SIZE(recv_data, 4);
uint32 ArenaTeamId; uint32 ArenaTeamId;
recv_data >> ArenaTeamId; recv_data >> ArenaTeamId;
@ -70,8 +66,6 @@ void WorldSession::HandleArenaTeamRosterOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug( "WORLD: Received CMSG_ARENA_TEAM_ROSTER" ); sLog.outDebug( "WORLD: Received CMSG_ARENA_TEAM_ROSTER" );
CHECK_PACKET_SIZE(recv_data, 4);
uint32 ArenaTeamId; // arena team id uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId; recv_data >> ArenaTeamId;
@ -86,8 +80,6 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug("CMSG_ARENA_TEAM_INVITE"); sLog.outDebug("CMSG_ARENA_TEAM_INVITE");
CHECK_PACKET_SIZE(recv_data, 4+1);
uint32 ArenaTeamId; // arena team id uint32 ArenaTeamId; // arena team id
std::string Invitedname; std::string Invitedname;
@ -205,8 +197,6 @@ void WorldSession::HandleArenaTeamLeaveOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug("CMSG_ARENA_TEAM_LEAVE"); sLog.outDebug("CMSG_ARENA_TEAM_LEAVE");
CHECK_PACKET_SIZE(recv_data, 4);
uint32 ArenaTeamId; // arena team id uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId; recv_data >> ArenaTeamId;
@ -242,8 +232,6 @@ void WorldSession::HandleArenaTeamDisbandOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug("CMSG_ARENA_TEAM_DISBAND"); sLog.outDebug("CMSG_ARENA_TEAM_DISBAND");
CHECK_PACKET_SIZE(recv_data, 4);
uint32 ArenaTeamId; // arena team id uint32 ArenaTeamId; // arena team id
recv_data >> ArenaTeamId; recv_data >> ArenaTeamId;
@ -265,8 +253,6 @@ void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug("CMSG_ARENA_TEAM_REMOVE"); sLog.outDebug("CMSG_ARENA_TEAM_REMOVE");
CHECK_PACKET_SIZE(recv_data, 4+1);
uint32 ArenaTeamId; uint32 ArenaTeamId;
std::string name; std::string name;
@ -311,8 +297,6 @@ void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket & recv_data)
{ {
sLog.outDebug("CMSG_ARENA_TEAM_LEADER"); sLog.outDebug("CMSG_ARENA_TEAM_LEADER");
CHECK_PACKET_SIZE(recv_data, 4+1);
uint32 ArenaTeamId; uint32 ArenaTeamId;
std::string name; std::string name;

View file

@ -33,8 +33,6 @@
//void called when player click on auctioneer npc //void called when player click on auctioneer npc
void WorldSession::HandleAuctionHelloOpcode( WorldPacket & recv_data ) void WorldSession::HandleAuctionHelloOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; //NPC guid uint64 guid; //NPC guid
recv_data >> guid; recv_data >> guid;
@ -151,8 +149,6 @@ void WorldSession::SendAuctionCancelledToBidderMail( AuctionEntry* auction )
//this void creates new auction and adds auction to some auctionhouse //this void creates new auction and adds auction to some auctionhouse
void WorldSession::HandleAuctionSellItem( WorldPacket & recv_data ) void WorldSession::HandleAuctionSellItem( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+8+4+4+4);
uint64 auctioneer, item; uint64 auctioneer, item;
uint32 etime, bid, buyout; uint32 etime, bid, buyout;
recv_data >> auctioneer >> item; recv_data >> auctioneer >> item;
@ -275,8 +271,6 @@ void WorldSession::HandleAuctionSellItem( WorldPacket & recv_data )
//this function is called when client bids or buys out auction //this function is called when client bids or buys out auction
void WorldSession::HandleAuctionPlaceBid( WorldPacket & recv_data ) void WorldSession::HandleAuctionPlaceBid( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4);
uint64 auctioneer; uint64 auctioneer;
uint32 auctionId; uint32 auctionId;
uint32 price; uint32 price;
@ -404,8 +398,6 @@ void WorldSession::HandleAuctionPlaceBid( WorldPacket & recv_data )
//this void is called when auction_owner cancels his auction //this void is called when auction_owner cancels his auction
void WorldSession::HandleAuctionRemoveItem( WorldPacket & recv_data ) void WorldSession::HandleAuctionRemoveItem( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 auctioneer; uint64 auctioneer;
uint32 auctionId; uint32 auctionId;
recv_data >> auctioneer; recv_data >> auctioneer;
@ -482,8 +474,6 @@ void WorldSession::HandleAuctionRemoveItem( WorldPacket & recv_data )
//called when player lists his bids //called when player lists his bids
void WorldSession::HandleAuctionListBidderItems( WorldPacket & recv_data ) void WorldSession::HandleAuctionListBidderItems( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4);
uint64 guid; //NPC guid uint64 guid; //NPC guid
uint32 listfrom; //page of auctions uint32 listfrom; //page of auctions
uint32 outbiddedCount; //count of outbidded auctions uint32 outbiddedCount; //count of outbidded auctions
@ -538,8 +528,6 @@ void WorldSession::HandleAuctionListBidderItems( WorldPacket & recv_data )
//this void sends player info about his auctions //this void sends player info about his auctions
void WorldSession::HandleAuctionListOwnerItems( WorldPacket & recv_data ) void WorldSession::HandleAuctionListOwnerItems( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint32 listfrom; uint32 listfrom;
uint64 guid; uint64 guid;
@ -575,8 +563,6 @@ void WorldSession::HandleAuctionListOwnerItems( WorldPacket & recv_data )
//this void is called when player clicks on search button //this void is called when player clicks on search button
void WorldSession::HandleAuctionListItems( WorldPacket & recv_data ) void WorldSession::HandleAuctionListItems( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+1+1+1+4+4+4+4+1);
std::string searchedname; std::string searchedname;
uint8 levelmin, levelmax, usable; uint8 levelmin, levelmax, usable;
uint32 listfrom, auctionSlotID, auctionMainCategory, auctionSubCategory, quality; uint32 listfrom, auctionSlotID, auctionMainCategory, auctionSubCategory, quality;
@ -586,9 +572,6 @@ void WorldSession::HandleAuctionListItems( WorldPacket & recv_data )
recv_data >> listfrom; // start, used for page control listing by 50 elements recv_data >> listfrom; // start, used for page control listing by 50 elements
recv_data >> searchedname; recv_data >> searchedname;
// recheck with known string size
CHECK_PACKET_SIZE(recv_data,8+4+(searchedname.size()+1)+1+1+4+4+4+4+1);
recv_data >> levelmin >> levelmax; recv_data >> levelmin >> levelmax;
recv_data >> auctionSlotID >> auctionMainCategory >> auctionSubCategory; recv_data >> auctionSlotID >> auctionMainCategory >> auctionSubCategory;
recv_data >> quality >> usable; recv_data >> quality >> usable;

View file

@ -34,8 +34,6 @@
void WorldSession::HandleBattlemasterHelloOpcode( WorldPacket & recv_data ) void WorldSession::HandleBattlemasterHelloOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
sLog.outDebug( "WORLD: Recvd CMSG_BATTLEMASTER_HELLO Message from (GUID: %u TypeId:%u)", GUID_LOPART(guid),GuidHigh2TypeId(GUID_HIPART(guid))); sLog.outDebug( "WORLD: Recvd CMSG_BATTLEMASTER_HELLO Message from (GUID: %u TypeId:%u)", GUID_LOPART(guid),GuidHigh2TypeId(GUID_HIPART(guid)));
@ -71,8 +69,6 @@ void WorldSession::SendBattlegGroundList( uint64 guid, BattleGroundTypeId bgType
void WorldSession::HandleBattlemasterJoinOpcode( WorldPacket & recv_data ) void WorldSession::HandleBattlemasterJoinOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+4+4+1);
uint64 guid; uint64 guid;
uint32 bgTypeId_; uint32 bgTypeId_;
uint32 instanceId; uint32 instanceId;
@ -275,8 +271,6 @@ void WorldSession::HandlePVPLogDataOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleBattlefieldListOpcode( WorldPacket &recv_data ) void WorldSession::HandleBattlefieldListOpcode( WorldPacket &recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4 + 1);
sLog.outDebug( "WORLD: Recvd CMSG_BATTLEFIELD_LIST Message"); sLog.outDebug( "WORLD: Recvd CMSG_BATTLEFIELD_LIST Message");
uint32 bgTypeId; uint32 bgTypeId;
@ -299,8 +293,6 @@ void WorldSession::HandleBattlefieldListOpcode( WorldPacket &recv_data )
void WorldSession::HandleBattleFieldPortOpcode( WorldPacket &recv_data ) void WorldSession::HandleBattleFieldPortOpcode( WorldPacket &recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1+1+4+2+1);
sLog.outDebug( "WORLD: Recvd CMSG_BATTLEFIELD_PORT Message"); sLog.outDebug( "WORLD: Recvd CMSG_BATTLEFIELD_PORT Message");
uint8 type; // arenatype if arena uint8 type; // arenatype if arena
@ -495,8 +487,6 @@ void WorldSession::HandleBattleFieldPortOpcode( WorldPacket &recv_data )
void WorldSession::HandleLeaveBattlefieldOpcode( WorldPacket & /*recv_data*/ ) void WorldSession::HandleLeaveBattlefieldOpcode( WorldPacket & /*recv_data*/ )
{ {
//CHECK_PACKET_SIZE(recv_data, 1+1+4+2);
sLog.outDebug( "WORLD: Recvd CMSG_LEAVE_BATTLEFIELD Message"); sLog.outDebug( "WORLD: Recvd CMSG_LEAVE_BATTLEFIELD Message");
//uint8 unk1, unk2; //uint8 unk1, unk2;
@ -579,8 +569,6 @@ void WorldSession::HandleAreaSpiritHealerQueryOpcode( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: CMSG_AREA_SPIRIT_HEALER_QUERY"); sLog.outDebug("WORLD: CMSG_AREA_SPIRIT_HEALER_QUERY");
CHECK_PACKET_SIZE(recv_data, 8);
BattleGround *bg = _player->GetBattleGround(); BattleGround *bg = _player->GetBattleGround();
if (!bg) if (!bg)
return; return;
@ -602,8 +590,6 @@ void WorldSession::HandleAreaSpiritHealerQueueOpcode( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: CMSG_AREA_SPIRIT_HEALER_QUEUE"); sLog.outDebug("WORLD: CMSG_AREA_SPIRIT_HEALER_QUEUE");
CHECK_PACKET_SIZE(recv_data, 8);
BattleGround *bg = _player->GetBattleGround(); BattleGround *bg = _player->GetBattleGround();
if (!bg) if (!bg)
return; return;
@ -623,8 +609,6 @@ void WorldSession::HandleAreaSpiritHealerQueueOpcode( WorldPacket & recv_data )
void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data ) void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+1+1+1);
sLog.outDebug("WORLD: CMSG_BATTLEMASTER_JOIN_ARENA"); sLog.outDebug("WORLD: CMSG_BATTLEMASTER_JOIN_ARENA");
recv_data.hexlike(); recv_data.hexlike();
@ -778,8 +762,6 @@ void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )
void WorldSession::HandleReportPvPAFK( WorldPacket & recv_data ) void WorldSession::HandleReportPvPAFK( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 playerGuid; uint64 playerGuid;
recv_data >> playerGuid; recv_data >> playerGuid;
Player *reportedPlayer = objmgr.GetPlayer(playerGuid); Player *reportedPlayer = objmgr.GetPlayer(playerGuid);

View file

@ -22,8 +22,6 @@
void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) void WorldSession::HandleJoinChannel(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 4+1+1+1);
uint32 channel_id; uint32 channel_id;
uint8 unknown1, unknown2; uint8 unknown1, unknown2;
@ -35,9 +33,6 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket)
if(channelname.empty()) if(channelname.empty())
return; return;
// recheck
CHECK_PACKET_SIZE(recvPacket, 4+1+1+(channelname.size()+1)+1);
recvPacket >> pass; recvPacket >> pass;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if(Channel *chn = cMgr->GetJoinChannel(channelname, channel_id)) if(Channel *chn = cMgr->GetJoinChannel(channelname, channel_id))
@ -48,7 +43,6 @@ void WorldSession::HandleLeaveChannel(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 4+1);
uint32 unk; uint32 unk;
std::string channelname; std::string channelname;
@ -70,8 +64,6 @@ void WorldSession::HandleChannelList(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1);
std::string channelname; std::string channelname;
recvPacket >> channelname; recvPacket >> channelname;
@ -84,14 +76,9 @@ void WorldSession::HandleChannelPassword(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, pass; std::string channelname, pass;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> pass; recvPacket >> pass;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
@ -103,14 +90,9 @@ void WorldSession::HandleChannelSetOwner(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, newp; std::string channelname, newp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> newp; recvPacket >> newp;
if(!normalizePlayerName(newp)) if(!normalizePlayerName(newp))
@ -125,8 +107,6 @@ void WorldSession::HandleChannelOwner(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1);
std::string channelname; std::string channelname;
recvPacket >> channelname; recvPacket >> channelname;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
@ -138,14 +118,9 @@ void WorldSession::HandleChannelModerator(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
@ -160,14 +135,9 @@ void WorldSession::HandleChannelUnmoderator(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
@ -182,14 +152,9 @@ void WorldSession::HandleChannelMute(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
@ -204,14 +169,10 @@ void WorldSession::HandleChannelUnmute(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
@ -226,14 +187,9 @@ void WorldSession::HandleChannelInvite(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
@ -248,14 +204,9 @@ void WorldSession::HandleChannelKick(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
return; return;
@ -269,14 +220,9 @@ void WorldSession::HandleChannelBan(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
@ -291,14 +237,10 @@ void WorldSession::HandleChannelUnban(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1+1);
std::string channelname, otp; std::string channelname, otp;
recvPacket >> channelname; recvPacket >> channelname;
// recheck
CHECK_PACKET_SIZE(recvPacket, (channelname.size()+1)+1);
recvPacket >> otp; recvPacket >> otp;
if(!normalizePlayerName(otp)) if(!normalizePlayerName(otp))
@ -313,8 +255,6 @@ void WorldSession::HandleChannelAnnouncements(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1);
std::string channelname; std::string channelname;
recvPacket >> channelname; recvPacket >> channelname;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
@ -326,8 +266,6 @@ void WorldSession::HandleChannelModerate(WorldPacket& recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1);
std::string channelname; std::string channelname;
recvPacket >> channelname; recvPacket >> channelname;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
@ -339,8 +277,6 @@ void WorldSession::HandleChannelDisplayListQuery(WorldPacket &recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1);
std::string channelname; std::string channelname;
recvPacket >> channelname; recvPacket >> channelname;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
@ -352,8 +288,6 @@ void WorldSession::HandleGetChannelMemberCount(WorldPacket &recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1);
std::string channelname; std::string channelname;
recvPacket >> channelname; recvPacket >> channelname;
if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
@ -373,8 +307,6 @@ void WorldSession::HandleSetChannelWatch(WorldPacket &recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); sLog.outDebug("Opcode %u", recvPacket.GetOpcode());
//recvPacket.hexlike(); //recvPacket.hexlike();
CHECK_PACKET_SIZE(recvPacket, 1);
std::string channelname; std::string channelname;
recvPacket >> channelname; recvPacket >> channelname;
/*if(ChannelMgr* cMgr = channelMgr(_player->GetTeam())) /*if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))

View file

@ -178,16 +178,11 @@ void WorldSession::HandleCharEnumOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data ) void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1+1+1+1+1+1+1+1+1);
std::string name; std::string name;
uint8 race_,class_; uint8 race_,class_;
recv_data >> name; recv_data >> name;
// recheck with known string size
CHECK_PACKET_SIZE(recv_data,(name.size()+1)+1+1+1+1+1+1+1+1+1);
recv_data >> race_; recv_data >> race_;
recv_data >> class_; recv_data >> class_;
@ -472,8 +467,6 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
void WorldSession::HandleCharDeleteOpcode( WorldPacket & recv_data ) void WorldSession::HandleCharDeleteOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -534,8 +527,6 @@ void WorldSession::HandleCharDeleteOpcode( WorldPacket & recv_data )
void WorldSession::HandlePlayerLoginOpcode( WorldPacket & recv_data ) void WorldSession::HandlePlayerLoginOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
if(PlayerLoading() || GetPlayer() != NULL) if(PlayerLoading() || GetPlayer() != NULL)
{ {
sLog.outError("Player tryes to login again, AccountId = %d",GetAccountId()); sLog.outError("Player tryes to login again, AccountId = %d",GetAccountId());
@ -799,8 +790,6 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
void WorldSession::HandleSetFactionAtWar( WorldPacket & recv_data ) void WorldSession::HandleSetFactionAtWar( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+1);
DEBUG_LOG( "WORLD: Received CMSG_SET_FACTION_ATWAR" ); DEBUG_LOG( "WORLD: Received CMSG_SET_FACTION_ATWAR" );
uint32 repListID; uint32 repListID;
@ -815,8 +804,6 @@ void WorldSession::HandleSetFactionAtWar( WorldPacket & recv_data )
//I think this function is never used :/ I dunno, but i guess this opcode not exists //I think this function is never used :/ I dunno, but i guess this opcode not exists
void WorldSession::HandleSetFactionCheat( WorldPacket & /*recv_data*/ ) void WorldSession::HandleSetFactionCheat( WorldPacket & /*recv_data*/ )
{ {
//CHECK_PACKET_SIZE(recv_data,4+4);
sLog.outError("WORLD SESSION: HandleSetFactionCheat, not expected call, please report."); sLog.outError("WORLD SESSION: HandleSetFactionCheat, not expected call, please report.");
/* /*
uint32 FactionID; uint32 FactionID;
@ -849,8 +836,6 @@ void WorldSession::HandleMeetingStoneInfo( WorldPacket & /*recv_data*/ )
void WorldSession::HandleTutorialFlag( WorldPacket & recv_data ) void WorldSession::HandleTutorialFlag( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4);
uint32 iFlag; uint32 iFlag;
recv_data >> iFlag; recv_data >> iFlag;
@ -883,8 +868,6 @@ void WorldSession::HandleTutorialReset( WorldPacket & /*recv_data*/ )
void WorldSession::HandleSetWatchedFactionOpcode(WorldPacket & recv_data) void WorldSession::HandleSetWatchedFactionOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4);
DEBUG_LOG("WORLD: Received CMSG_SET_WATCHED_FACTION"); DEBUG_LOG("WORLD: Received CMSG_SET_WATCHED_FACTION");
uint32 fact; uint32 fact;
recv_data >> fact; recv_data >> fact;
@ -893,8 +876,6 @@ void WorldSession::HandleSetWatchedFactionOpcode(WorldPacket & recv_data)
void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket & recv_data) void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4+1);
DEBUG_LOG("WORLD: Received CMSG_SET_FACTION_INACTIVE"); DEBUG_LOG("WORLD: Received CMSG_SET_FACTION_INACTIVE");
uint32 replistid; uint32 replistid;
uint8 inactive; uint8 inactive;
@ -917,8 +898,6 @@ void WorldSession::HandleShowingCloakOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data) void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
uint64 guid; uint64 guid;
std::string newname; std::string newname;
@ -1003,7 +982,6 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
{ {
uint64 guid; uint64 guid;
CHECK_PACKET_SIZE(recv_data, 8);
recv_data >> guid; recv_data >> guid;
// not accept declined names for unsupported languages // not accept declined names for unsupported languages
@ -1039,7 +1017,6 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
std::string name2; std::string name2;
DeclinedName declinedname; DeclinedName declinedname;
CHECK_PACKET_SIZE(recv_data, recv_data.rpos() + 1);
recv_data >> name2; recv_data >> name2;
if(name2 != name) // character have different name if(name2 != name) // character have different name
@ -1053,7 +1030,6 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
for(int i = 0; i < MAX_DECLINED_NAME_CASES; ++i) for(int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
{ {
CHECK_PACKET_SIZE(recv_data, recv_data.rpos() + 1);
recv_data >> declinedname.name[i]; recv_data >> declinedname.name[i];
if(!normalizePlayerName(declinedname.name[i])) if(!normalizePlayerName(declinedname.name[i]))
{ {
@ -1093,8 +1069,6 @@ void WorldSession::HandleAlterAppearance( WorldPacket & recv_data )
{ {
sLog.outDebug("CMSG_ALTER_APPEARANCE"); sLog.outDebug("CMSG_ALTER_APPEARANCE");
CHECK_PACKET_SIZE(recv_data, 4+4+4);
uint32 Hair, Color, FacialHair; uint32 Hair, Color, FacialHair;
recv_data >> Hair >> Color >> FacialHair; recv_data >> Hair >> Color >> FacialHair;
@ -1141,8 +1115,6 @@ void WorldSession::HandleAlterAppearance( WorldPacket & recv_data )
void WorldSession::HandleRemoveGlyph( WorldPacket & recv_data ) void WorldSession::HandleRemoveGlyph( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
uint32 slot; uint32 slot;
recv_data >> slot; recv_data >> slot;
@ -1165,16 +1137,12 @@ void WorldSession::HandleRemoveGlyph( WorldPacket & recv_data )
void WorldSession::HandleCharCustomize(WorldPacket& recv_data) void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
uint64 guid; uint64 guid;
std::string newname; std::string newname;
recv_data >> guid; recv_data >> guid;
recv_data >> newname; recv_data >> newname;
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+1+1+1+1+1+1);
uint8 gender, skin, face, hairStyle, hairColor, facialHair; uint8 gender, skin, face, hairStyle, hairColor, facialHair;
recv_data >> gender >> skin >> hairColor >> hairStyle >> facialHair >> face; recv_data >> gender >> skin >> hairColor >> hairStyle >> facialHair >> face;
@ -1267,18 +1235,14 @@ void WorldSession::HandleEquipmentSetSave(WorldPacket &recv_data)
if(!recv_data.readPackGUID(setGuid)) if(!recv_data.readPackGUID(setGuid))
return; return;
CHECK_PACKET_SIZE(recv_data, recv_data.rpos() + 4);
uint32 index; uint32 index;
recv_data >> index; recv_data >> index;
if(index >= MAX_EQUIPMENT_SET_INDEX) // client set slots amount if(index >= MAX_EQUIPMENT_SET_INDEX) // client set slots amount
return; return;
CHECK_PACKET_SIZE(recv_data, recv_data.rpos() + 1);
std::string name; std::string name;
recv_data >> name; recv_data >> name;
CHECK_PACKET_SIZE(recv_data, recv_data.rpos() + 1);
std::string iconName; std::string iconName;
recv_data >> iconName; recv_data >> iconName;
@ -1331,8 +1295,6 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket &recv_data)
if(!recv_data.readPackGUID(itemGuid)) if(!recv_data.readPackGUID(itemGuid))
return; return;
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+1+1);
uint8 srcbag, srcslot; uint8 srcbag, srcslot;
recv_data >> srcbag >> srcslot; recv_data >> srcbag >> srcslot;

View file

@ -39,8 +39,6 @@
void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data ) void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+4+1);
uint32 type; uint32 type;
uint32 lang; uint32 lang;
@ -171,7 +169,6 @@ void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data )
{ {
std::string to, msg; std::string to, msg;
recv_data >> to; recv_data >> to;
CHECK_PACKET_SIZE(recv_data,4+4+(to.size()+1)+1);
recv_data >> msg; recv_data >> msg;
// strip invisible characters for non-addon messages // strip invisible characters for non-addon messages
@ -424,9 +421,6 @@ void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data )
std::string channel = "", msg = ""; std::string channel = "", msg = "";
recv_data >> channel; recv_data >> channel;
// recheck
CHECK_PACKET_SIZE(recv_data,4+4+(channel.size()+1)+1);
recv_data >> msg; recv_data >> msg;
// strip invisible characters for non-addon messages // strip invisible characters for non-addon messages
@ -491,7 +485,6 @@ void WorldSession::HandleEmoteOpcode( WorldPacket & recv_data )
{ {
if(!GetPlayer()->isAlive()) if(!GetPlayer()->isAlive())
return; return;
CHECK_PACKET_SIZE(recv_data,4);
uint32 emote; uint32 emote;
recv_data >> emote; recv_data >> emote;
@ -542,8 +535,6 @@ void WorldSession::HandleTextEmoteOpcode( WorldPacket & recv_data )
return; return;
} }
CHECK_PACKET_SIZE(recv_data,4+4+8);
uint32 text_emote, emoteNum; uint32 text_emote, emoteNum;
uint64 guid; uint64 guid;
@ -593,8 +584,6 @@ void WorldSession::HandleTextEmoteOpcode( WorldPacket & recv_data )
void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recv_data ) void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
uint64 iguid; uint64 iguid;
uint8 unk; uint8 unk;
//sLog.outDebug("WORLD: Received CMSG_CHAT_IGNORED"); //sLog.outDebug("WORLD: Received CMSG_CHAT_IGNORED");

View file

@ -26,8 +26,6 @@
void WorldSession::HandleAttackSwingOpcode( WorldPacket & recv_data ) void WorldSession::HandleAttackSwingOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -74,8 +72,6 @@ void WorldSession::HandleAttackStopOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleSetSheathedOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetSheathedOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4);
uint32 sheathed; uint32 sheathed;
recv_data >> sheathed; recv_data >> sheathed;

View file

@ -26,8 +26,6 @@
void WorldSession::HandleDuelAcceptedOpcode(WorldPacket& recvPacket) void WorldSession::HandleDuelAcceptedOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,8);
uint64 guid; uint64 guid;
Player *pl; Player *pl;
Player *plTarget; Player *plTarget;
@ -59,8 +57,6 @@ void WorldSession::HandleDuelAcceptedOpcode(WorldPacket& recvPacket)
void WorldSession::HandleDuelCancelledOpcode(WorldPacket& recvPacket) void WorldSession::HandleDuelCancelledOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,8);
//sLog.outDebug( "WORLD: received CMSG_DUEL_CANCELLED" ); //sLog.outDebug( "WORLD: received CMSG_DUEL_CANCELLED" );
// no duel requested // no duel requested

View file

@ -59,8 +59,6 @@ void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleGMTicketUpdateTextOpcode( WorldPacket & recv_data ) void WorldSession::HandleGMTicketUpdateTextOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1);
std::string ticketText; std::string ticketText;
recv_data >> ticketText; recv_data >> ticketText;
@ -83,8 +81,6 @@ void WorldSession::HandleGMTicketDeleteTicketOpcode( WorldPacket & /*recv_data*/
void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data ) void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4*4+1+2*4);
uint32 map; uint32 map;
float x, y, z; float x, y, z;
std::string ticketText = ""; std::string ticketText = "";
@ -93,9 +89,6 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data )
recv_data >> map >> x >> y >> z; // last check 2.4.3 recv_data >> map >> x >> y >> z; // last check 2.4.3
recv_data >> ticketText; recv_data >> ticketText;
// recheck
CHECK_PACKET_SIZE(recv_data,4*4+(ticketText.size()+1)+2*4);
recv_data >> unk1 >> unk2; recv_data >> unk1 >> unk2;
// note: the packet might contain more data, but the exact structure of that is unknown // note: the packet might contain more data, but the exact structure of that is unknown
@ -141,7 +134,6 @@ void WorldSession::HandleGMTicketSystemStatusOpcode( WorldPacket & /*recv_data*/
void WorldSession::HandleGMSurveySubmit( WorldPacket & recv_data) void WorldSession::HandleGMSurveySubmit( WorldPacket & recv_data)
{ {
// GM survey is shown after SMSG_GM_TICKET_STATUS_UPDATE with status = 3 // GM survey is shown after SMSG_GM_TICKET_STATUS_UPDATE with status = 3
CHECK_PACKET_SIZE(recv_data, 4+4);
uint32 x; uint32 x;
recv_data >> x; // answer range? (6 = 0-5?) recv_data >> x; // answer range? (6 = 0-5?)
sLog.outDebug("SURVEY: X = %u", x); sLog.outDebug("SURVEY: X = %u", x);
@ -150,13 +142,11 @@ void WorldSession::HandleGMSurveySubmit( WorldPacket & recv_data)
memset(result, 0, sizeof(result)); memset(result, 0, sizeof(result));
for( int i = 0; i < 10; ++i) for( int i = 0; i < 10; ++i)
{ {
CHECK_PACKET_SIZE(recv_data,recv_data.rpos()+4);
uint32 questionID; uint32 questionID;
recv_data >> questionID; // GMSurveyQuestions.dbc recv_data >> questionID; // GMSurveyQuestions.dbc
if (!questionID) if (!questionID)
break; break;
CHECK_PACKET_SIZE(recv_data,recv_data.rpos()+1+1);
uint8 value; uint8 value;
std::string unk_text; std::string unk_text;
recv_data >> value; // answer recv_data >> value; // answer
@ -166,7 +156,6 @@ void WorldSession::HandleGMSurveySubmit( WorldPacket & recv_data)
sLog.outDebug("SURVEY: ID %u, value %u, text %s", questionID, value, unk_text.c_str()); sLog.outDebug("SURVEY: ID %u, value %u, text %s", questionID, value, unk_text.c_str());
} }
CHECK_PACKET_SIZE(recv_data,recv_data.rpos()+1);
std::string comment; std::string comment;
recv_data >> comment; // addional comment recv_data >> comment; // addional comment
sLog.outDebug("SURVEY: comment %s", comment.c_str()); sLog.outDebug("SURVEY: comment %s", comment.c_str());

View file

@ -220,8 +220,6 @@ void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data) void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -260,8 +258,6 @@ void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data)
void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data) void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,1);
std::string membername; std::string membername;
recv_data >> membername; recv_data >> membername;
@ -304,8 +300,6 @@ void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data)
void WorldSession::HandleGroupSetLeaderOpcode( WorldPacket & recv_data ) void WorldSession::HandleGroupSetLeaderOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
Group *group = GetPlayer()->GetGroup(); Group *group = GetPlayer()->GetGroup();
if(!group) if(!group)
return; return;
@ -346,8 +340,6 @@ void WorldSession::HandleGroupDisbandOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleLootMethodOpcode( WorldPacket & recv_data ) void WorldSession::HandleLootMethodOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+8+4);
Group *group = GetPlayer()->GetGroup(); Group *group = GetPlayer()->GetGroup();
if(!group) if(!group)
return; return;
@ -371,8 +363,6 @@ void WorldSession::HandleLootMethodOpcode( WorldPacket & recv_data )
void WorldSession::HandleLootRoll( WorldPacket &recv_data ) void WorldSession::HandleLootRoll( WorldPacket &recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+1);
if(!GetPlayer()->GetGroup()) if(!GetPlayer()->GetGroup())
return; return;
@ -405,8 +395,6 @@ void WorldSession::HandleLootRoll( WorldPacket &recv_data )
void WorldSession::HandleMinimapPingOpcode(WorldPacket& recv_data) void WorldSession::HandleMinimapPingOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4+4);
if(!GetPlayer()->GetGroup()) if(!GetPlayer()->GetGroup())
return; return;
@ -429,8 +417,6 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recv_data)
void WorldSession::HandleRandomRollOpcode(WorldPacket& recv_data) void WorldSession::HandleRandomRollOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4+4);
uint32 minimum, maximum, roll; uint32 minimum, maximum, roll;
recv_data >> minimum; recv_data >> minimum;
recv_data >> maximum; recv_data >> maximum;
@ -458,8 +444,6 @@ void WorldSession::HandleRandomRollOpcode(WorldPacket& recv_data)
void WorldSession::HandleRaidTargetUpdateOpcode( WorldPacket & recv_data ) void WorldSession::HandleRaidTargetUpdateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1);
Group *group = GetPlayer()->GetGroup(); Group *group = GetPlayer()->GetGroup();
if(!group) if(!group)
return; return;
@ -477,9 +461,6 @@ void WorldSession::HandleRaidTargetUpdateOpcode( WorldPacket & recv_data )
} }
else // target icon update else // target icon update
{ {
// recheck
CHECK_PACKET_SIZE(recv_data,1+8);
if(!group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID())) if(!group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
return; return;
@ -510,8 +491,6 @@ void WorldSession::HandleGroupRaidConvertOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data ) void WorldSession::HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1);
// we will get correct pointer for group here, so we don't have to check if group is BG raid // we will get correct pointer for group here, so we don't have to check if group is BG raid
Group *group = GetPlayer()->GetGroup(); Group *group = GetPlayer()->GetGroup();
if(!group) if(!group)
@ -521,9 +500,6 @@ void WorldSession::HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data )
uint8 groupNr; uint8 groupNr;
recv_data >> name; recv_data >> name;
// recheck
CHECK_PACKET_SIZE(recv_data,(name.size()+1)+1);
recv_data >> groupNr; recv_data >> groupNr;
/** error handling **/ /** error handling **/
@ -540,8 +516,6 @@ void WorldSession::HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data )
void WorldSession::HandleGroupAssistantLeaderOpcode( WorldPacket & recv_data ) void WorldSession::HandleGroupAssistantLeaderOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+1);
Group *group = GetPlayer()->GetGroup(); Group *group = GetPlayer()->GetGroup();
if(!group) if(!group)
return; return;
@ -562,7 +536,6 @@ void WorldSession::HandleGroupAssistantLeaderOpcode( WorldPacket & recv_data )
void WorldSession::HandlePartyAssignmentOpcode( WorldPacket & recv_data ) void WorldSession::HandlePartyAssignmentOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1+1+8);
sLog.outDebug("MSG_PARTY_ASSIGNMENT"); sLog.outDebug("MSG_PARTY_ASSIGNMENT");
Group *group = GetPlayer()->GetGroup(); Group *group = GetPlayer()->GetGroup();
@ -797,8 +770,6 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacke
/*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/ /*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/
void WorldSession::HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data ) void WorldSession::HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
sLog.outDebug("WORLD: Received CMSG_REQUEST_PARTY_MEMBER_STATS"); sLog.outDebug("WORLD: Received CMSG_REQUEST_PARTY_MEMBER_STATS");
uint64 Guid; uint64 Guid;
recv_data >> Guid; recv_data >> Guid;
@ -900,8 +871,6 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data )
void WorldSession::HandleOptOutOfLootOpcode( WorldPacket & recv_data ) void WorldSession::HandleOptOutOfLootOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
sLog.outDebug("WORLD: Received CMSG_OPT_OUT_OF_LOOT"); sLog.outDebug("WORLD: Received CMSG_OPT_OUT_OF_LOOT");
uint32 unkn; uint32 unkn;

View file

@ -29,8 +29,6 @@
void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 4);
uint32 guildId; uint32 guildId;
Guild *guild; Guild *guild;
@ -50,8 +48,6 @@ void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string gname; std::string gname;
//sLog.outDebug("WORLD: Received CMSG_GUILD_CREATE"); //sLog.outDebug("WORLD: Received CMSG_GUILD_CREATE");
@ -73,8 +69,6 @@ void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string Invitedname, plname; std::string Invitedname, plname;
//sLog.outDebug("WORLD: Received CMSG_GUILD_INVITE"); //sLog.outDebug("WORLD: Received CMSG_GUILD_INVITE");
@ -146,8 +140,6 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string plName; std::string plName;
//sLog.outDebug("WORLD: Received CMSG_GUILD_REMOVE"); //sLog.outDebug("WORLD: Received CMSG_GUILD_REMOVE");
@ -269,8 +261,6 @@ void WorldSession::HandleGuildRosterOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string plName; std::string plName;
//sLog.outDebug("WORLD: Received CMSG_GUILD_PROMOTE"); //sLog.outDebug("WORLD: Received CMSG_GUILD_PROMOTE");
@ -327,8 +317,6 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string plName; std::string plName;
//sLog.outDebug("WORLD: Received CMSG_GUILD_DEMOTE"); //sLog.outDebug("WORLD: Received CMSG_GUILD_DEMOTE");
@ -451,8 +439,6 @@ void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string name; std::string name;
Player *oldLeader = GetPlayer(); Player *oldLeader = GetPlayer();
Guild *guild; Guild *guild;
@ -537,8 +523,6 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string name,PNOTE; std::string name,PNOTE;
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE"); //sLog.outDebug("WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE");
@ -579,8 +563,6 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
std::string plName, OFFNOTE; std::string plName, OFFNOTE;
//sLog.outDebug("WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE"); //sLog.outDebug("WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE");
@ -620,7 +602,6 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 4+4+1+4*13);
//recvPacket.hexlike(); //recvPacket.hexlike();
Guild *guild; Guild *guild;
@ -672,8 +653,6 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
Guild *guild; Guild *guild;
std::string rankname; std::string rankname;
@ -742,8 +721,6 @@ void WorldSession::SendGuildCommandResult(uint32 typecmd, const std::string& str
void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket) void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
//sLog.outDebug("WORLD: Received CMSG_GUILD_INFO_TEXT"); //sLog.outDebug("WORLD: Received CMSG_GUILD_INFO_TEXT");
std::string GINFO; std::string GINFO;
@ -768,8 +745,6 @@ void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket) void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 8+4+4+4+4+4);
//sLog.outDebug("WORLD: Received MSG_SAVE_GUILD_EMBLEM"); //sLog.outDebug("WORLD: Received MSG_SAVE_GUILD_EMBLEM");
uint64 vendorGuid; uint64 vendorGuid;
@ -900,7 +875,6 @@ void WorldSession::HandleGuildPermissions( WorldPacket& /* recv_data */ )
void WorldSession::HandleGuildBankerActivate( WorldPacket & recv_data ) void WorldSession::HandleGuildBankerActivate( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANKER_ACTIVATE)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANKER_ACTIVATE)");
CHECK_PACKET_SIZE(recv_data,8+1);
uint64 GoGuid; uint64 GoGuid;
uint8 unk; uint8 unk;
recv_data >> GoGuid >> unk; recv_data >> GoGuid >> unk;
@ -924,7 +898,6 @@ void WorldSession::HandleGuildBankerActivate( WorldPacket & recv_data )
void WorldSession::HandleGuildBankQueryTab( WorldPacket & recv_data ) void WorldSession::HandleGuildBankQueryTab( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_QUERY_TAB)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_QUERY_TAB)");
CHECK_PACKET_SIZE(recv_data,8+1+1);
uint64 GoGuid; uint64 GoGuid;
uint8 TabId,unk1; uint8 TabId,unk1;
recv_data >> GoGuid >> TabId >> unk1; recv_data >> GoGuid >> TabId >> unk1;
@ -950,7 +923,6 @@ void WorldSession::HandleGuildBankQueryTab( WorldPacket & recv_data )
void WorldSession::HandleGuildBankDepositMoney( WorldPacket & recv_data ) void WorldSession::HandleGuildBankDepositMoney( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_DEPOSIT_MONEY)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_DEPOSIT_MONEY)");
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 GoGuid; uint64 GoGuid;
uint32 money; uint32 money;
recv_data >> GoGuid >> money; recv_data >> GoGuid >> money;
@ -998,7 +970,6 @@ void WorldSession::HandleGuildBankDepositMoney( WorldPacket & recv_data )
void WorldSession::HandleGuildBankWithdrawMoney( WorldPacket & recv_data ) void WorldSession::HandleGuildBankWithdrawMoney( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_WITHDRAW_MONEY)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_WITHDRAW_MONEY)");
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 GoGuid; uint64 GoGuid;
uint32 money; uint32 money;
recv_data >> GoGuid >> money; recv_data >> GoGuid >> money;
@ -1057,12 +1028,9 @@ void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
uint8 BankTabDst, BankTabSlotDst, unk2, ToChar = 1; uint8 BankTabDst, BankTabSlotDst, unk2, ToChar = 1;
uint32 ItemEntry, unk1; uint32 ItemEntry, unk1;
CHECK_PACKET_SIZE(recv_data,8+1);
recv_data >> GoGuid >> BankToBank; recv_data >> GoGuid >> BankToBank;
if (BankToBank) if (BankToBank)
{ {
// recheck
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+1+1+4+1+1+4+1+1);
recv_data >> BankTabDst; recv_data >> BankTabDst;
recv_data >> BankTabSlotDst; recv_data >> BankTabSlotDst;
recv_data >> unk1; // always 0 recv_data >> unk1; // always 0
@ -1079,26 +1047,18 @@ void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
} }
else else
{ {
// recheck
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+1+1+4+1);
recv_data >> BankTab; recv_data >> BankTab;
recv_data >> BankTabSlot; recv_data >> BankTabSlot;
recv_data >> ItemEntry; recv_data >> ItemEntry;
recv_data >> AutoStore; recv_data >> AutoStore;
if (AutoStore) if (AutoStore)
{ {
// recheck
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+1);
recv_data >> AutoStoreCount; recv_data >> AutoStoreCount;
} }
// recheck
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+1+1);
recv_data >> PlayerBag; recv_data >> PlayerBag;
recv_data >> PlayerSlot; recv_data >> PlayerSlot;
if (!AutoStore) if (!AutoStore)
{ {
// recheck
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+1+1);
recv_data >> ToChar; recv_data >> ToChar;
recv_data >> SplitedAmount; recv_data >> SplitedAmount;
} }
@ -1554,7 +1514,6 @@ void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
void WorldSession::HandleGuildBankBuyTab( WorldPacket & recv_data ) void WorldSession::HandleGuildBankBuyTab( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_BUY_TAB)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_BUY_TAB)");
CHECK_PACKET_SIZE(recv_data, 8+1);
//recv_data.hexlike(); //recv_data.hexlike();
uint64 GoGuid; uint64 GoGuid;
uint8 TabId; uint8 TabId;
@ -1602,7 +1561,6 @@ void WorldSession::HandleGuildBankUpdateTab( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_UPDATE_TAB)"); sLog.outDebug("WORLD: Received (CMSG_GUILD_BANK_UPDATE_TAB)");
//recv_data.hexlike(); //recv_data.hexlike();
CHECK_PACKET_SIZE(recv_data, 8+1+1+1);
uint64 GoGuid; uint64 GoGuid;
uint8 TabId; uint8 TabId;
std::string Name; std::string Name;
@ -1638,7 +1596,6 @@ void WorldSession::HandleGuildBankUpdateTab( WorldPacket & recv_data )
void WorldSession::HandleGuildBankLogQuery( WorldPacket & recv_data ) void WorldSession::HandleGuildBankLogQuery( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: Received (MSG_GUILD_BANK_LOG_QUERY)"); sLog.outDebug("WORLD: Received (MSG_GUILD_BANK_LOG_QUERY)");
CHECK_PACKET_SIZE(recv_data, 1);
uint32 GuildId = GetPlayer()->GetGuildId(); uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0) if (GuildId == 0)
@ -1657,7 +1614,6 @@ void WorldSession::HandleGuildBankLogQuery( WorldPacket & recv_data )
void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recv_data) void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recv_data)
{ {
sLog.outDebug("WORLD: Received MSG_QUERY_GUILD_BANK_TEXT"); sLog.outDebug("WORLD: Received MSG_QUERY_GUILD_BANK_TEXT");
CHECK_PACKET_SIZE(recv_data, 1);
uint32 GuildId = GetPlayer()->GetGuildId(); uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0) if (GuildId == 0)
@ -1676,8 +1632,6 @@ void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recv_data)
void WorldSession::HandleSetGuildBankTabText(WorldPacket &recv_data) void WorldSession::HandleSetGuildBankTabText(WorldPacket &recv_data)
{ {
sLog.outDebug("WORLD: Received CMSG_SET_GUILD_BANK_TEXT"); sLog.outDebug("WORLD: Received CMSG_SET_GUILD_BANK_TEXT");
CHECK_PACKET_SIZE(recv_data, 1+1);
uint32 GuildId = GetPlayer()->GetGuildId(); uint32 GuildId = GetPlayer()->GetGuildId();
if (GuildId == 0) if (GuildId == 0)
return; return;

View file

@ -29,8 +29,6 @@
void WorldSession::HandleSplitItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleSplitItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1+1+1+1);
//sLog.outDebug("WORLD: CMSG_SPLIT_ITEM"); //sLog.outDebug("WORLD: CMSG_SPLIT_ITEM");
uint8 srcbag, srcslot, dstbag, dstslot, count; uint8 srcbag, srcslot, dstbag, dstslot, count;
@ -63,8 +61,6 @@ void WorldSession::HandleSplitItemOpcode( WorldPacket & recv_data )
void WorldSession::HandleSwapInvItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleSwapInvItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1);
//sLog.outDebug("WORLD: CMSG_SWAP_INV_ITEM"); //sLog.outDebug("WORLD: CMSG_SWAP_INV_ITEM");
uint8 srcslot, dstslot; uint8 srcslot, dstslot;
@ -95,7 +91,6 @@ void WorldSession::HandleSwapInvItemOpcode( WorldPacket & recv_data )
void WorldSession::HandleAutoEquipItemSlotOpcode( WorldPacket & recv_data ) void WorldSession::HandleAutoEquipItemSlotOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+1);
uint64 itemguid; uint64 itemguid;
uint8 dstslot; uint8 dstslot;
recv_data >> itemguid >> dstslot; recv_data >> itemguid >> dstslot;
@ -115,8 +110,6 @@ void WorldSession::HandleAutoEquipItemSlotOpcode( WorldPacket & recv_data )
void WorldSession::HandleSwapItem( WorldPacket & recv_data ) void WorldSession::HandleSwapItem( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1+1+1);
//sLog.outDebug("WORLD: CMSG_SWAP_ITEM"); //sLog.outDebug("WORLD: CMSG_SWAP_ITEM");
uint8 dstbag, dstslot, srcbag, srcslot; uint8 dstbag, dstslot, srcbag, srcslot;
@ -147,8 +140,6 @@ void WorldSession::HandleSwapItem( WorldPacket & recv_data )
void WorldSession::HandleAutoEquipItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleAutoEquipItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1);
//sLog.outDebug("WORLD: CMSG_AUTOEQUIP_ITEM"); //sLog.outDebug("WORLD: CMSG_AUTOEQUIP_ITEM");
uint8 srcbag, srcslot; uint8 srcbag, srcslot;
@ -250,8 +241,6 @@ void WorldSession::HandleAutoEquipItemOpcode( WorldPacket & recv_data )
void WorldSession::HandleDestroyItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleDestroyItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1+1+1+1+1);
//sLog.outDebug("WORLD: CMSG_DESTROYITEM"); //sLog.outDebug("WORLD: CMSG_DESTROYITEM");
uint8 bag, slot, count, data1, data2, data3; uint8 bag, slot, count, data1, data2, data3;
@ -290,8 +279,6 @@ void WorldSession::HandleDestroyItemOpcode( WorldPacket & recv_data )
// Only _static_ data send in this packet !!! // Only _static_ data send in this packet !!!
void WorldSession::HandleItemQuerySingleOpcode( WorldPacket & recv_data ) void WorldSession::HandleItemQuerySingleOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
//sLog.outDebug("WORLD: CMSG_ITEM_QUERY_SINGLE"); //sLog.outDebug("WORLD: CMSG_ITEM_QUERY_SINGLE");
uint32 item; uint32 item;
recv_data >> item; recv_data >> item;
@ -453,8 +440,6 @@ void WorldSession::HandleItemQuerySingleOpcode( WorldPacket & recv_data )
void WorldSession::HandleReadItem( WorldPacket & recv_data ) void WorldSession::HandleReadItem( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1);
//sLog.outDebug( "WORLD: CMSG_READ_ITEM"); //sLog.outDebug( "WORLD: CMSG_READ_ITEM");
uint8 bag, slot; uint8 bag, slot;
@ -488,8 +473,6 @@ void WorldSession::HandleReadItem( WorldPacket & recv_data )
void WorldSession::HandlePageQuerySkippedOpcode( WorldPacket & recv_data ) void WorldSession::HandlePageQuerySkippedOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+8);
sLog.outDebug( "WORLD: Received CMSG_PAGE_TEXT_QUERY" ); sLog.outDebug( "WORLD: Received CMSG_PAGE_TEXT_QUERY" );
uint32 itemid; uint32 itemid;
@ -503,8 +486,6 @@ void WorldSession::HandlePageQuerySkippedOpcode( WorldPacket & recv_data )
void WorldSession::HandleSellItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleSellItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+8+1);
sLog.outDebug( "WORLD: Received CMSG_SELL_ITEM" ); sLog.outDebug( "WORLD: Received CMSG_SELL_ITEM" );
uint64 vendorguid, itemguid; uint64 vendorguid, itemguid;
uint8 _count; uint8 _count;
@ -614,8 +595,6 @@ void WorldSession::HandleSellItemOpcode( WorldPacket & recv_data )
void WorldSession::HandleBuybackItem(WorldPacket & recv_data) void WorldSession::HandleBuybackItem(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
sLog.outDebug( "WORLD: Received CMSG_BUYBACK_ITEM" ); sLog.outDebug( "WORLD: Received CMSG_BUYBACK_ITEM" );
uint64 vendorguid; uint64 vendorguid;
uint32 slot; uint32 slot;
@ -663,8 +642,6 @@ void WorldSession::HandleBuybackItem(WorldPacket & recv_data)
void WorldSession::HandleBuyItemInSlotOpcode( WorldPacket & recv_data ) void WorldSession::HandleBuyItemInSlotOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4+8+1+4);
sLog.outDebug( "WORLD: Received CMSG_BUY_ITEM_IN_SLOT" ); sLog.outDebug( "WORLD: Received CMSG_BUY_ITEM_IN_SLOT" );
uint64 vendorguid, bagguid; uint64 vendorguid, bagguid;
uint32 item, slot, count; uint32 item, slot, count;
@ -701,8 +678,6 @@ void WorldSession::HandleBuyItemInSlotOpcode( WorldPacket & recv_data )
void WorldSession::HandleBuyItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleBuyItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4+4+1);
sLog.outDebug( "WORLD: Received CMSG_BUY_ITEM" ); sLog.outDebug( "WORLD: Received CMSG_BUY_ITEM" );
uint64 vendorguid; uint64 vendorguid;
uint32 item, slot, count; uint32 item, slot, count;
@ -715,8 +690,6 @@ void WorldSession::HandleBuyItemOpcode( WorldPacket & recv_data )
void WorldSession::HandleListInventoryOpcode( WorldPacket & recv_data ) void WorldSession::HandleListInventoryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -799,8 +772,6 @@ void WorldSession::SendListInventory( uint64 vendorguid )
void WorldSession::HandleAutoStoreBagItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleAutoStoreBagItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1+1);
//sLog.outDebug("WORLD: CMSG_AUTOSTORE_BAG_ITEM"); //sLog.outDebug("WORLD: CMSG_AUTOSTORE_BAG_ITEM");
uint8 srcbag, srcslot, dstbag; uint8 srcbag, srcslot, dstbag;
@ -852,8 +823,6 @@ void WorldSession::HandleAutoStoreBagItemOpcode( WorldPacket & recv_data )
void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket) void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 8);
sLog.outDebug("WORLD: CMSG_BUY_BANK_SLOT"); sLog.outDebug("WORLD: CMSG_BUY_BANK_SLOT");
uint64 guid; uint64 guid;
@ -893,8 +862,6 @@ void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket)
void WorldSession::HandleAutoBankItemOpcode(WorldPacket& recvPacket) void WorldSession::HandleAutoBankItemOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,1+1);
sLog.outDebug("WORLD: CMSG_AUTOBANK_ITEM"); sLog.outDebug("WORLD: CMSG_AUTOBANK_ITEM");
uint8 srcbag, srcslot; uint8 srcbag, srcslot;
@ -919,8 +886,6 @@ void WorldSession::HandleAutoBankItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket) void WorldSession::HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,1+1);
sLog.outDebug("WORLD: CMSG_AUTOSTORE_BANK_ITEM"); sLog.outDebug("WORLD: CMSG_AUTOSTORE_BANK_ITEM");
uint8 srcbag, srcslot; uint8 srcbag, srcslot;
@ -961,8 +926,6 @@ void WorldSession::HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleSetAmmoOpcode(WorldPacket & recv_data) void WorldSession::HandleSetAmmoOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4);
if(!GetPlayer()->isAlive()) if(!GetPlayer()->isAlive())
{ {
GetPlayer()->SendEquipError( EQUIP_ERR_YOU_ARE_DEAD, NULL, NULL ); GetPlayer()->SendEquipError( EQUIP_ERR_YOU_ARE_DEAD, NULL, NULL );
@ -1004,8 +967,6 @@ void WorldSession::SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,
void WorldSession::HandleItemNameQueryOpcode(WorldPacket & recv_data) void WorldSession::HandleItemNameQueryOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4);
uint32 itemid; uint32 itemid;
recv_data >> itemid; recv_data >> itemid;
sLog.outDebug("WORLD: CMSG_ITEM_NAME_QUERY %u", itemid); sLog.outDebug("WORLD: CMSG_ITEM_NAME_QUERY %u", itemid);
@ -1045,8 +1006,6 @@ void WorldSession::HandleItemNameQueryOpcode(WorldPacket & recv_data)
void WorldSession::HandleWrapItemOpcode(WorldPacket& recv_data) void WorldSession::HandleWrapItemOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,1+1+1+1);
sLog.outDebug("Received opcode CMSG_WRAP_ITEM"); sLog.outDebug("Received opcode CMSG_WRAP_ITEM");
uint8 gift_bag, gift_slot, item_bag, item_slot; uint8 gift_bag, gift_slot, item_bag, item_slot;
@ -1154,8 +1113,6 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recv_data)
{ {
sLog.outDebug("WORLD: CMSG_SOCKET_GEMS"); sLog.outDebug("WORLD: CMSG_SOCKET_GEMS");
CHECK_PACKET_SIZE(recv_data,8+8*MAX_GEM_SOCKETS);
uint64 item_guid; uint64 item_guid;
uint64 gem_guids[MAX_GEM_SOCKETS]; uint64 gem_guids[MAX_GEM_SOCKETS];
@ -1356,8 +1313,6 @@ void WorldSession::HandleCancelTempEnchantmentOpcode(WorldPacket& recv_data)
{ {
sLog.outDebug("WORLD: CMSG_CANCEL_TEMP_ENCHANTMENT"); sLog.outDebug("WORLD: CMSG_CANCEL_TEMP_ENCHANTMENT");
CHECK_PACKET_SIZE(recv_data,4);
uint32 eslot; uint32 eslot;
recv_data >> eslot; recv_data >> eslot;

View file

@ -205,8 +205,6 @@ void WorldSession::HandleLfmClearOpcode( WorldPacket & /*recv_data */)
void WorldSession::HandleSetLfmOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetLfmOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4+1+1+1+1);
sLog.outDebug("CMSG_SET_LOOKING_FOR_MORE"); sLog.outDebug("CMSG_SET_LOOKING_FOR_MORE");
//recv_data.hexlike(); //recv_data.hexlike();
uint32 temp, entry, type; uint32 temp, entry, type;
@ -229,8 +227,6 @@ void WorldSession::HandleSetLfmOpcode( WorldPacket & recv_data )
void WorldSession::HandleSetLfgCommentOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetLfgCommentOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1);
sLog.outDebug("CMSG_SET_LFG_COMMENT"); sLog.outDebug("CMSG_SET_LFG_COMMENT");
//recv_data.hexlike(); //recv_data.hexlike();
@ -243,8 +239,6 @@ void WorldSession::HandleSetLfgCommentOpcode( WorldPacket & recv_data )
void WorldSession::HandleLookingForGroup(WorldPacket& recv_data) void WorldSession::HandleLookingForGroup(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 4+4+4);
sLog.outDebug("MSG_LOOKING_FOR_GROUP"); sLog.outDebug("MSG_LOOKING_FOR_GROUP");
//recv_data.hexlike(); //recv_data.hexlike();
uint32 type, entry, unk; uint32 type, entry, unk;
@ -397,8 +391,6 @@ void WorldSession::SendLfgResult(uint32 type, uint32 entry, uint8 lfg_type)
void WorldSession::HandleSetLfgOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetLfgOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4+4+1+1);
sLog.outDebug("CMSG_SET_LOOKING_FOR_GROUP"); sLog.outDebug("CMSG_SET_LOOKING_FOR_GROUP");
recv_data.hexlike(); recv_data.hexlike();
uint32 slot, temp, entry, type; uint32 slot, temp, entry, type;
@ -425,8 +417,6 @@ void WorldSession::HandleSetLfgOpcode( WorldPacket & recv_data )
void WorldSession::HandleLfgSetRoles(WorldPacket &recv_data) void WorldSession::HandleLfgSetRoles(WorldPacket &recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 1);
sLog.outDebug("CMSG_LFG_SET_ROLES"); sLog.outDebug("CMSG_LFG_SET_ROLES");
uint8 roles; uint8 roles;

View file

@ -32,8 +32,6 @@
void WorldSession::HandleAutostoreLootItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleAutostoreLootItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1);
sLog.outDebug("WORLD: CMSG_AUTOSTORE_LOOT_ITEM"); sLog.outDebug("WORLD: CMSG_AUTOSTORE_LOOT_ITEM");
Player *player = GetPlayer(); Player *player = GetPlayer();
uint64 lguid = player->GetLootGUID(); uint64 lguid = player->GetLootGUID();
@ -240,8 +238,6 @@ void WorldSession::HandleLootMoneyOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleLootOpcode( WorldPacket & recv_data ) void WorldSession::HandleLootOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDebug("WORLD: CMSG_LOOT"); sLog.outDebug("WORLD: CMSG_LOOT");
uint64 guid; uint64 guid;
@ -256,8 +252,6 @@ void WorldSession::HandleLootOpcode( WorldPacket & recv_data )
void WorldSession::HandleLootReleaseOpcode( WorldPacket & recv_data ) void WorldSession::HandleLootReleaseOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDebug("WORLD: CMSG_LOOT_RELEASE"); sLog.outDebug("WORLD: CMSG_LOOT_RELEASE");
// cheaters can modify lguid to prevent correct apply loot release code and re-loot // cheaters can modify lguid to prevent correct apply loot release code and re-loot
@ -437,8 +431,6 @@ void WorldSession::DoLootRelease( uint64 lguid )
void WorldSession::HandleLootMasterGiveOpcode( WorldPacket & recv_data ) void WorldSession::HandleLootMasterGiveOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+1+8);
uint8 slotid; uint8 slotid;
uint64 lootguid, target_playerguid; uint64 lootguid, target_playerguid;

View file

@ -52,8 +52,6 @@ void MailItem::deleteItem( bool inDB )
void WorldSession::HandleSendMail(WorldPacket & recv_data ) void WorldSession::HandleSendMail(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+1+1+1+4+4+1+4+4+8+1);
uint64 mailbox, unk3; uint64 mailbox, unk3;
std::string receiver, subject, body; std::string receiver, subject, body;
uint32 unk1, unk2, money, COD; uint32 unk1, unk2, money, COD;
@ -64,19 +62,10 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data )
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX)) if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return; return;
// recheck
CHECK_PACKET_SIZE(recv_data, 8+(receiver.size()+1)+1+1+4+4+1+4+4+8+1);
recv_data >> subject; recv_data >> subject;
// recheck
CHECK_PACKET_SIZE(recv_data, 8+(receiver.size()+1)+(subject.size()+1)+1+4+4+1+4+4+8+1);
recv_data >> body; recv_data >> body;
// recheck
CHECK_PACKET_SIZE(recv_data, 8+(receiver.size()+1)+(subject.size()+1)+(body.size()+1)+4+4+1+4+4+8+1);
recv_data >> unk1; // stationery? recv_data >> unk1; // stationery?
recv_data >> unk2; // 0x00000000 recv_data >> unk2; // 0x00000000
@ -91,9 +80,6 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data )
return; return;
} }
// recheck
CHECK_PACKET_SIZE(recv_data, 8+(receiver.size()+1)+(subject.size()+1)+(body.size()+1)+4+4+1+items_count*(1+8)+4+4+8+1);
if(items_count) if(items_count)
{ {
for(uint8 i = 0; i < items_count; ++i) for(uint8 i = 0; i < items_count; ++i)
@ -297,8 +283,6 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data )
//called when mail is read //called when mail is read
void WorldSession::HandleMailMarkAsRead(WorldPacket & recv_data ) void WorldSession::HandleMailMarkAsRead(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 mailbox; uint64 mailbox;
uint32 mailId; uint32 mailId;
recv_data >> mailbox; recv_data >> mailbox;
@ -323,8 +307,6 @@ void WorldSession::HandleMailMarkAsRead(WorldPacket & recv_data )
//called when client deletes mail //called when client deletes mail
void WorldSession::HandleMailDelete(WorldPacket & recv_data ) void WorldSession::HandleMailDelete(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 mailbox; uint64 mailbox;
uint32 mailId; uint32 mailId;
recv_data >> mailbox; recv_data >> mailbox;
@ -343,8 +325,6 @@ void WorldSession::HandleMailDelete(WorldPacket & recv_data )
void WorldSession::HandleMailReturnToSender(WorldPacket & recv_data ) void WorldSession::HandleMailReturnToSender(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 mailbox; uint64 mailbox;
uint32 mailId; uint32 mailId;
recv_data >> mailbox; recv_data >> mailbox;
@ -443,8 +423,6 @@ void WorldSession::SendReturnToSender(uint8 messageType, uint32 sender_acc, uint
//called when player takes item attached in mail //called when player takes item attached in mail
void WorldSession::HandleMailTakeItem(WorldPacket & recv_data ) void WorldSession::HandleMailTakeItem(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4);
uint64 mailbox; uint64 mailbox;
uint32 mailId; uint32 mailId;
uint32 itemId; uint32 itemId;
@ -538,8 +516,6 @@ void WorldSession::HandleMailTakeItem(WorldPacket & recv_data )
void WorldSession::HandleMailTakeMoney(WorldPacket & recv_data ) void WorldSession::HandleMailTakeMoney(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 mailbox; uint64 mailbox;
uint32 mailId; uint32 mailId;
recv_data >> mailbox; recv_data >> mailbox;
@ -574,8 +550,6 @@ void WorldSession::HandleMailTakeMoney(WorldPacket & recv_data )
//called when player lists his received mails //called when player lists his received mails
void WorldSession::HandleGetMailList(WorldPacket & recv_data ) void WorldSession::HandleGetMailList(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 mailbox; uint64 mailbox;
recv_data >> mailbox; recv_data >> mailbox;
@ -696,8 +670,6 @@ void WorldSession::HandleGetMailList(WorldPacket & recv_data )
///this function is called when client needs mail message body, or when player clicks on item which has ITEM_FIELD_ITEM_TEXT_ID > 0 ///this function is called when client needs mail message body, or when player clicks on item which has ITEM_FIELD_ITEM_TEXT_ID > 0
void WorldSession::HandleItemTextQuery(WorldPacket & recv_data ) void WorldSession::HandleItemTextQuery(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+4+4);
uint32 itemTextId; uint32 itemTextId;
uint32 mailId; //this value can be item id in bag, but it is also mail id uint32 mailId; //this value can be item id in bag, but it is also mail id
uint32 unk; //maybe something like state - 0x70000000 uint32 unk; //maybe something like state - 0x70000000
@ -717,8 +689,6 @@ void WorldSession::HandleItemTextQuery(WorldPacket & recv_data )
//used when player copies mail body to his inventory //used when player copies mail body to his inventory
void WorldSession::HandleMailCreateTextItem(WorldPacket & recv_data ) void WorldSession::HandleMailCreateTextItem(WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 mailbox; uint64 mailbox;
uint32 mailId; uint32 mailId;

View file

@ -66,8 +66,6 @@ void WorldSession::HandleRepopRequestOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleWhoOpcode( WorldPacket & recv_data ) void WorldSession::HandleWhoOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+4+1+1+4+4+4+4);
sLog.outDebug( "WORLD: Recvd CMSG_WHO Message" ); sLog.outDebug( "WORLD: Recvd CMSG_WHO Message" );
//recv_data.hexlike(); //recv_data.hexlike();
@ -81,14 +79,8 @@ void WorldSession::HandleWhoOpcode( WorldPacket & recv_data )
recv_data >> level_max; // minimal player level, default 100 (MAX_LEVEL) recv_data >> level_max; // minimal player level, default 100 (MAX_LEVEL)
recv_data >> player_name; // player name, case sensitive... recv_data >> player_name; // player name, case sensitive...
// recheck
CHECK_PACKET_SIZE(recv_data,4+4+(player_name.size()+1)+1+4+4+4+4);
recv_data >> guild_name; // guild name, case sensitive... recv_data >> guild_name; // guild name, case sensitive...
// recheck
CHECK_PACKET_SIZE(recv_data,4+4+(player_name.size()+1)+(guild_name.size()+1)+4+4+4+4);
recv_data >> racemask; // race mask recv_data >> racemask; // race mask
recv_data >> classmask; // class mask recv_data >> classmask; // class mask
recv_data >> zones_count; // zones count, client limit=10 (2.0.10) recv_data >> zones_count; // zones count, client limit=10 (2.0.10)
@ -96,9 +88,6 @@ void WorldSession::HandleWhoOpcode( WorldPacket & recv_data )
if(zones_count > 10) if(zones_count > 10)
return; // can't be received from real client or broken packet return; // can't be received from real client or broken packet
// recheck
CHECK_PACKET_SIZE(recv_data,4+4+(player_name.size()+1)+(guild_name.size()+1)+4+4+4+(4*zones_count)+4);
for(uint32 i = 0; i < zones_count; ++i) for(uint32 i = 0; i < zones_count; ++i)
{ {
uint32 temp; uint32 temp;
@ -112,17 +101,11 @@ void WorldSession::HandleWhoOpcode( WorldPacket & recv_data )
if(str_count > 4) if(str_count > 4)
return; // can't be received from real client or broken packet return; // can't be received from real client or broken packet
// recheck
CHECK_PACKET_SIZE(recv_data,4+4+(player_name.size()+1)+(guild_name.size()+1)+4+4+4+(4*zones_count)+4+(1*str_count));
sLog.outDebug("Minlvl %u, maxlvl %u, name %s, guild %s, racemask %u, classmask %u, zones %u, strings %u", level_min, level_max, player_name.c_str(), guild_name.c_str(), racemask, classmask, zones_count, str_count); sLog.outDebug("Minlvl %u, maxlvl %u, name %s, guild %s, racemask %u, classmask %u, zones %u, strings %u", level_min, level_max, player_name.c_str(), guild_name.c_str(), racemask, classmask, zones_count, str_count);
std::wstring str[4]; // 4 is client limit std::wstring str[4]; // 4 is client limit
for(uint32 i = 0; i < str_count; ++i) for(uint32 i = 0; i < str_count; ++i)
{ {
// recheck (have one more byte)
CHECK_PACKET_SIZE(recv_data,recv_data.rpos());
std::string temp; std::string temp;
recv_data >> temp; // user entered string, it used as universal search pattern(guild+player name)? recv_data >> temp; // user entered string, it used as universal search pattern(guild+player name)?
@ -381,8 +364,6 @@ void WorldSession::HandleTogglePvP( WorldPacket & recv_data )
void WorldSession::HandleZoneUpdateOpcode( WorldPacket & recv_data ) void WorldSession::HandleZoneUpdateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4);
uint32 newZone; uint32 newZone;
recv_data >> newZone; recv_data >> newZone;
@ -397,8 +378,6 @@ void WorldSession::HandleZoneUpdateOpcode( WorldPacket & recv_data )
void WorldSession::HandleSetTargetOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetTargetOpcode( WorldPacket & recv_data )
{ {
// When this packet send? // When this packet send?
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid ; uint64 guid ;
recv_data >> guid; recv_data >> guid;
@ -415,8 +394,6 @@ void WorldSession::HandleSetTargetOpcode( WorldPacket & recv_data )
void WorldSession::HandleSetSelectionOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetSelectionOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -433,8 +410,6 @@ void WorldSession::HandleSetSelectionOpcode( WorldPacket & recv_data )
void WorldSession::HandleStandStateChangeOpcode( WorldPacket & recv_data ) void WorldSession::HandleStandStateChangeOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1);
sLog.outDebug( "WORLD: Received CMSG_STAND_STATE_CHANGE" ); sLog.outDebug( "WORLD: Received CMSG_STAND_STATE_CHANGE" );
uint8 animstate; uint8 animstate;
recv_data >> animstate; recv_data >> animstate;
@ -444,7 +419,6 @@ void WorldSession::HandleStandStateChangeOpcode( WorldPacket & recv_data )
void WorldSession::HandleContactListOpcode( WorldPacket & recv_data ) void WorldSession::HandleContactListOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
sLog.outDebug( "WORLD: Received CMSG_CONTACT_LIST" ); sLog.outDebug( "WORLD: Received CMSG_CONTACT_LIST" );
uint32 unk; uint32 unk;
recv_data >> unk; recv_data >> unk;
@ -454,8 +428,6 @@ void WorldSession::HandleContactListOpcode( WorldPacket & recv_data )
void WorldSession::HandleAddFriendOpcode( WorldPacket & recv_data ) void WorldSession::HandleAddFriendOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1+1);
sLog.outDebug( "WORLD: Received CMSG_ADD_FRIEND" ); sLog.outDebug( "WORLD: Received CMSG_ADD_FRIEND" );
std::string friendName = GetMangosString(LANG_FRIEND_IGNORE_UNKNOWN); std::string friendName = GetMangosString(LANG_FRIEND_IGNORE_UNKNOWN);
@ -463,9 +435,6 @@ void WorldSession::HandleAddFriendOpcode( WorldPacket & recv_data )
recv_data >> friendName; recv_data >> friendName;
// recheck
CHECK_PACKET_SIZE(recv_data, (friendName.size()+1)+1);
recv_data >> friendNote; recv_data >> friendNote;
if(!normalizePlayerName(friendName)) if(!normalizePlayerName(friendName))
@ -527,8 +496,6 @@ void WorldSession::HandleAddFriendOpcodeCallBack(QueryResult *result, uint32 acc
void WorldSession::HandleDelFriendOpcode( WorldPacket & recv_data ) void WorldSession::HandleDelFriendOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 FriendGUID; uint64 FriendGUID;
sLog.outDebug( "WORLD: Received CMSG_DEL_FRIEND" ); sLog.outDebug( "WORLD: Received CMSG_DEL_FRIEND" );
@ -544,8 +511,6 @@ void WorldSession::HandleDelFriendOpcode( WorldPacket & recv_data )
void WorldSession::HandleAddIgnoreOpcode( WorldPacket & recv_data ) void WorldSession::HandleAddIgnoreOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1);
sLog.outDebug( "WORLD: Received CMSG_ADD_IGNORE" ); sLog.outDebug( "WORLD: Received CMSG_ADD_IGNORE" );
std::string IgnoreName = GetMangosString(LANG_FRIEND_IGNORE_UNKNOWN); std::string IgnoreName = GetMangosString(LANG_FRIEND_IGNORE_UNKNOWN);
@ -600,8 +565,6 @@ void WorldSession::HandleAddIgnoreOpcodeCallBack(QueryResult *result, uint32 acc
void WorldSession::HandleDelIgnoreOpcode( WorldPacket & recv_data ) void WorldSession::HandleDelIgnoreOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 IgnoreGUID; uint64 IgnoreGUID;
sLog.outDebug( "WORLD: Received CMSG_DEL_IGNORE" ); sLog.outDebug( "WORLD: Received CMSG_DEL_IGNORE" );
@ -617,7 +580,6 @@ void WorldSession::HandleDelIgnoreOpcode( WorldPacket & recv_data )
void WorldSession::HandleSetContactNotesOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetContactNotesOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
sLog.outDebug("CMSG_SET_CONTACT_NOTES"); sLog.outDebug("CMSG_SET_CONTACT_NOTES");
uint64 guid; uint64 guid;
std::string note; std::string note;
@ -627,8 +589,6 @@ void WorldSession::HandleSetContactNotesOpcode( WorldPacket & recv_data )
void WorldSession::HandleBugOpcode( WorldPacket & recv_data ) void WorldSession::HandleBugOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+4+1+4+1);
uint32 suggestion, contentlen; uint32 suggestion, contentlen;
std::string content; std::string content;
uint32 typelen; uint32 typelen;
@ -636,9 +596,6 @@ void WorldSession::HandleBugOpcode( WorldPacket & recv_data )
recv_data >> suggestion >> contentlen >> content; recv_data >> suggestion >> contentlen >> content;
//recheck
CHECK_PACKET_SIZE(recv_data,4+4+(content.size()+1)+4+1);
recv_data >> typelen >> type; recv_data >> typelen >> type;
if( suggestion == 0 ) if( suggestion == 0 )
@ -646,8 +603,8 @@ void WorldSession::HandleBugOpcode( WorldPacket & recv_data )
else else
sLog.outDebug( "WORLD: Received CMSG_BUG [Suggestion]" ); sLog.outDebug( "WORLD: Received CMSG_BUG [Suggestion]" );
sLog.outDebug( type.c_str( ) ); sLog.outDebug("%s", type.c_str() );
sLog.outDebug( content.c_str( ) ); sLog.outDebug("%s", content.c_str() );
CharacterDatabase.escape_string(type); CharacterDatabase.escape_string(type);
CharacterDatabase.escape_string(content); CharacterDatabase.escape_string(content);
@ -656,8 +613,6 @@ void WorldSession::HandleBugOpcode( WorldPacket & recv_data )
void WorldSession::HandleReclaimCorpseOpcode(WorldPacket &recv_data) void WorldSession::HandleReclaimCorpseOpcode(WorldPacket &recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDetail("WORLD: Received CMSG_RECLAIM_CORPSE"); sLog.outDetail("WORLD: Received CMSG_RECLAIM_CORPSE");
if (GetPlayer()->isAlive()) if (GetPlayer()->isAlive())
return; return;
@ -696,8 +651,6 @@ void WorldSession::HandleReclaimCorpseOpcode(WorldPacket &recv_data)
void WorldSession::HandleResurrectResponseOpcode(WorldPacket & recv_data) void WorldSession::HandleResurrectResponseOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,8+1);
sLog.outDetail("WORLD: Received CMSG_RESURRECT_RESPONSE"); sLog.outDetail("WORLD: Received CMSG_RESURRECT_RESPONSE");
if(GetPlayer()->isAlive()) if(GetPlayer()->isAlive())
@ -723,8 +676,6 @@ void WorldSession::HandleResurrectResponseOpcode(WorldPacket & recv_data)
void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data) void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4);
sLog.outDebug("WORLD: Received CMSG_AREATRIGGER"); sLog.outDebug("WORLD: Received CMSG_AREATRIGGER");
uint32 Trigger_ID; uint32 Trigger_ID;
@ -895,8 +846,6 @@ void WorldSession::HandleUpdateAccountData(WorldPacket &recv_data)
{ {
sLog.outDetail("WORLD: Received CMSG_UPDATE_ACCOUNT_DATA"); sLog.outDetail("WORLD: Received CMSG_UPDATE_ACCOUNT_DATA");
CHECK_PACKET_SIZE(recv_data, 4+4+4);
uint32 type, timestamp, decompressedSize; uint32 type, timestamp, decompressedSize;
recv_data >> type >> timestamp >> decompressedSize; recv_data >> type >> timestamp >> decompressedSize;
@ -948,8 +897,6 @@ void WorldSession::HandleRequestAccountData(WorldPacket& recv_data)
{ {
sLog.outDetail("WORLD: Received CMSG_REQUEST_ACCOUNT_DATA"); sLog.outDetail("WORLD: Received CMSG_REQUEST_ACCOUNT_DATA");
CHECK_PACKET_SIZE(recv_data, 4);
uint32 type; uint32 type;
recv_data >> type; recv_data >> type;
@ -986,8 +933,6 @@ void WorldSession::HandleRequestAccountData(WorldPacket& recv_data)
void WorldSession::HandleSetActionButtonOpcode(WorldPacket& recv_data) void WorldSession::HandleSetActionButtonOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,1+2+1+1);
sLog.outDebug( "WORLD: Received CMSG_SET_ACTION_BUTTON" ); sLog.outDebug( "WORLD: Received CMSG_SET_ACTION_BUTTON" );
uint8 button; uint8 button;
uint32 packetData; uint32 packetData;
@ -1043,7 +988,6 @@ void WorldSession::HandleMoveTimeSkippedOpcode( WorldPacket & /*recv_data*/ )
DEBUG_LOG( "WORLD: Time Lag/Synchronization Resent/Update" ); DEBUG_LOG( "WORLD: Time Lag/Synchronization Resent/Update" );
/* /*
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 guid; uint64 guid;
uint32 time_skipped; uint32 time_skipped;
recv_data >> guid; recv_data >> guid;
@ -1066,7 +1010,6 @@ void WorldSession::HandleFeatherFallAck(WorldPacket &/*recv_data*/)
void WorldSession::HandleMoveUnRootAck(WorldPacket&/* recv_data*/) void WorldSession::HandleMoveUnRootAck(WorldPacket&/* recv_data*/)
{ {
/* /*
CHECK_PACKET_SIZE(recv_data,8+8+4+4+4+4+4);
sLog.outDebug( "WORLD: CMSG_FORCE_MOVE_UNROOT_ACK" ); sLog.outDebug( "WORLD: CMSG_FORCE_MOVE_UNROOT_ACK" );
recv_data.hexlike(); recv_data.hexlike();
@ -1100,8 +1043,6 @@ void WorldSession::HandleMoveUnRootAck(WorldPacket&/* recv_data*/)
void WorldSession::HandleMoveRootAck(WorldPacket&/* recv_data*/) void WorldSession::HandleMoveRootAck(WorldPacket&/* recv_data*/)
{ {
/* /*
CHECK_PACKET_SIZE(recv_data,8+8+4+4+4+4+4);
sLog.outDebug( "WORLD: CMSG_FORCE_MOVE_ROOT_ACK" ); sLog.outDebug( "WORLD: CMSG_FORCE_MOVE_ROOT_ACK" );
recv_data.hexlike(); recv_data.hexlike();
uint64 guid; uint64 guid;
@ -1133,8 +1074,6 @@ void WorldSession::HandleMoveRootAck(WorldPacket&/* recv_data*/)
void WorldSession::HandleSetActionBarToggles(WorldPacket& recv_data) void WorldSession::HandleSetActionBarToggles(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,1);
uint8 ActionBar; uint8 ActionBar;
recv_data >> ActionBar; recv_data >> ActionBar;
@ -1152,8 +1091,6 @@ void WorldSession::HandleSetActionBarToggles(WorldPacket& recv_data)
void WorldSession::HandleWardenDataOpcode(WorldPacket& /*recv_data*/) void WorldSession::HandleWardenDataOpcode(WorldPacket& /*recv_data*/)
{ {
/* /*
CHECK_PACKET_SIZE(recv_data,1);
uint8 tmp; uint8 tmp;
recv_data >> tmp; recv_data >> tmp;
sLog.outDebug("Received opcode CMSG_WARDEN_DATA, not resolve.uint8 = %u",tmp); sLog.outDebug("Received opcode CMSG_WARDEN_DATA, not resolve.uint8 = %u",tmp);
@ -1162,8 +1099,6 @@ void WorldSession::HandleWardenDataOpcode(WorldPacket& /*recv_data*/)
void WorldSession::HandlePlayedTime(WorldPacket& recv_data) void WorldSession::HandlePlayedTime(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 1);
uint8 unk1; uint8 unk1;
recv_data >> unk1; // 0 or 1 expected recv_data >> unk1; // 0 or 1 expected
@ -1176,8 +1111,6 @@ void WorldSession::HandlePlayedTime(WorldPacket& recv_data)
void WorldSession::HandleInspectOpcode(WorldPacket& recv_data) void WorldSession::HandleInspectOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
DEBUG_LOG("Inspected guid is (GUID: %u TypeId: %u)", GUID_LOPART(guid), GuidHigh2TypeId(GUID_HIPART(guid))); DEBUG_LOG("Inspected guid is (GUID: %u TypeId: %u)", GUID_LOPART(guid), GuidHigh2TypeId(GUID_HIPART(guid)));
@ -1209,8 +1142,6 @@ void WorldSession::HandleInspectOpcode(WorldPacket& recv_data)
void WorldSession::HandleInspectHonorStatsOpcode(WorldPacket& recv_data) void WorldSession::HandleInspectHonorStatsOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -1234,8 +1165,6 @@ void WorldSession::HandleInspectHonorStatsOpcode(WorldPacket& recv_data)
void WorldSession::HandleWorldTeleportOpcode(WorldPacket& recv_data) void WorldSession::HandleWorldTeleportOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4+4+4+4+4+4);
// write in client console: worldport 469 452 6454 2536 180 or /console worldport 469 452 6454 2536 180 // write in client console: worldport 469 452 6454 2536 180 or /console worldport 469 452 6454 2536 180
// Received opcode CMSG_WORLD_TELEPORT // Received opcode CMSG_WORLD_TELEPORT
// Time is ***, map=469, x=452.000000, y=6454.000000, z=2536.000000, orient=3.141593 // Time is ***, map=469, x=452.000000, y=6454.000000, z=2536.000000, orient=3.141593
@ -1272,8 +1201,6 @@ void WorldSession::HandleWorldTeleportOpcode(WorldPacket& recv_data)
void WorldSession::HandleWhoisOpcode(WorldPacket& recv_data) void WorldSession::HandleWhoisOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 1);
sLog.outDebug("Received opcode CMSG_WHOIS"); sLog.outDebug("Received opcode CMSG_WHOIS");
std::string charname; std::string charname;
recv_data >> charname; recv_data >> charname;
@ -1331,7 +1258,6 @@ void WorldSession::HandleWhoisOpcode(WorldPacket& recv_data)
void WorldSession::HandleComplainOpcode( WorldPacket & recv_data ) void WorldSession::HandleComplainOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1+8);
sLog.outDebug("WORLD: CMSG_COMPLAIN"); sLog.outDebug("WORLD: CMSG_COMPLAIN");
recv_data.hexlike(); recv_data.hexlike();
@ -1347,13 +1273,11 @@ void WorldSession::HandleComplainOpcode( WorldPacket & recv_data )
switch(spam_type) switch(spam_type)
{ {
case 0: case 0:
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+4+4+4);
recv_data >> unk1; // const 0 recv_data >> unk1; // const 0
recv_data >> unk2; // probably mail id recv_data >> unk2; // probably mail id
recv_data >> unk3; // const 0 recv_data >> unk3; // const 0
break; break;
case 1: case 1:
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+4+4+4+4+1);
recv_data >> unk1; // probably language recv_data >> unk1; // probably language
recv_data >> unk2; // message type? recv_data >> unk2; // message type?
recv_data >> unk3; // probably channel id recv_data >> unk3; // probably channel id
@ -1375,8 +1299,6 @@ void WorldSession::HandleComplainOpcode( WorldPacket & recv_data )
void WorldSession::HandleRealmSplitOpcode( WorldPacket & recv_data ) void WorldSession::HandleRealmSplitOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
sLog.outDebug("CMSG_REALM_SPLIT"); sLog.outDebug("CMSG_REALM_SPLIT");
uint32 unk; uint32 unk;
@ -1397,8 +1319,6 @@ void WorldSession::HandleRealmSplitOpcode( WorldPacket & recv_data )
void WorldSession::HandleFarSightOpcode( WorldPacket & recv_data ) void WorldSession::HandleFarSightOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1);
sLog.outDebug("WORLD: CMSG_FAR_SIGHT"); sLog.outDebug("WORLD: CMSG_FAR_SIGHT");
//recv_data.hexlike(); //recv_data.hexlike();
@ -1421,8 +1341,6 @@ void WorldSession::HandleFarSightOpcode( WorldPacket & recv_data )
void WorldSession::HandleSetTitleOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetTitleOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
sLog.outDebug("CMSG_SET_TITLE"); sLog.outDebug("CMSG_SET_TITLE");
int32 title; int32 title;
@ -1442,8 +1360,6 @@ void WorldSession::HandleSetTitleOpcode( WorldPacket & recv_data )
void WorldSession::HandleTimeSyncResp( WorldPacket & recv_data ) void WorldSession::HandleTimeSyncResp( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4+4);
sLog.outDebug("CMSG_TIME_SYNC_RESP"); sLog.outDebug("CMSG_TIME_SYNC_RESP");
uint32 counter, time_; uint32 counter, time_;
@ -1470,8 +1386,6 @@ void WorldSession::HandleResetInstancesOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleSetDungeonDifficultyOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetDungeonDifficultyOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
sLog.outDebug("MSG_SET_DUNGEON_DIFFICULTY"); sLog.outDebug("MSG_SET_DUNGEON_DIFFICULTY");
uint32 mode; uint32 mode;
@ -1538,8 +1452,6 @@ void WorldSession::HandleCancelMountAuraOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleMoveSetCanFlyAckOpcode( WorldPacket & recv_data ) void WorldSession::HandleMoveSetCanFlyAckOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+4+4);
// fly mode on/off // fly mode on/off
sLog.outDebug("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK"); sLog.outDebug("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK");
//recv_data.hexlike(); //recv_data.hexlike();
@ -1563,8 +1475,6 @@ void WorldSession::HandleRequestPetInfoOpcode( WorldPacket & /*recv_data */)
void WorldSession::HandleSetTaxiBenchmarkOpcode( WorldPacket & recv_data ) void WorldSession::HandleSetTaxiBenchmarkOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1);
uint8 mode; uint8 mode;
recv_data >> mode; recv_data >> mode;
@ -1573,7 +1483,6 @@ void WorldSession::HandleSetTaxiBenchmarkOpcode( WorldPacket & recv_data )
void WorldSession::HandleQueryInspectAchievements( WorldPacket & recv_data ) void WorldSession::HandleQueryInspectAchievements( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 1);
uint64 guid; uint64 guid;
if(!recv_data.readPackGUID(guid)) if(!recv_data.readPackGUID(guid))
return; return;

View file

@ -160,8 +160,6 @@ void WorldSession::HandleMoveWorldportAckOpcode()
void WorldSession::HandleMoveTeleportAck(WorldPacket& recv_data) void WorldSession::HandleMoveTeleportAck(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8+4+4);
sLog.outDebug("MSG_MOVE_TELEPORT_ACK"); sLog.outDebug("MSG_MOVE_TELEPORT_ACK");
uint64 guid; uint64 guid;
uint32 flags, time; uint32 flags, time;
@ -343,8 +341,6 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data)
{ {
sLog.outDebug("WORLD: Recvd %s (%u, 0x%X) opcode", LookupOpcodeName(recv_data.GetOpcode()), recv_data.GetOpcode(), recv_data.GetOpcode()); sLog.outDebug("WORLD: Recvd %s (%u, 0x%X) opcode", LookupOpcodeName(recv_data.GetOpcode()), recv_data.GetOpcode(), recv_data.GetOpcode());
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+8+4);
/* extract packet */ /* extract packet */
uint64 guid; uint64 guid;
uint32 unk1; uint32 unk1;
@ -363,9 +359,6 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data)
MovementInfo movementInfo; MovementInfo movementInfo;
ReadMovementInfo(recv_data, &movementInfo); ReadMovementInfo(recv_data, &movementInfo);
// recheck
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+4);
recv_data >> newspeed; recv_data >> newspeed;
/*----------------*/ /*----------------*/
@ -424,8 +417,6 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data)
sLog.outDebug("WORLD: Recvd CMSG_SET_ACTIVE_MOVER"); sLog.outDebug("WORLD: Recvd CMSG_SET_ACTIVE_MOVER");
recv_data.hexlike(); recv_data.hexlike();
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -441,8 +432,6 @@ void WorldSession::HandleMoveNotActiveMover(WorldPacket &recv_data)
sLog.outDebug("WORLD: Recvd CMSG_MOVE_NOT_ACTIVE_MOVER"); sLog.outDebug("WORLD: Recvd CMSG_MOVE_NOT_ACTIVE_MOVER");
recv_data.hexlike(); recv_data.hexlike();
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+8);
uint64 old_mover_guid; uint64 old_mover_guid;
recv_data >> old_mover_guid; recv_data >> old_mover_guid;
@ -491,7 +480,6 @@ void WorldSession::HandleMountSpecialAnimOpcode(WorldPacket& /*recvdata*/)
void WorldSession::HandleMoveKnockBackAck( WorldPacket & /*recv_data*/ ) void WorldSession::HandleMoveKnockBackAck( WorldPacket & /*recv_data*/ )
{ {
// CHECK_PACKET_SIZE(recv_data,?);
sLog.outDebug("CMSG_MOVE_KNOCK_BACK_ACK"); sLog.outDebug("CMSG_MOVE_KNOCK_BACK_ACK");
// Currently not used but maybe use later for recheck final player position // Currently not used but maybe use later for recheck final player position
// (must be at call same as into "recv_data >> x >> y >> z >> orientation;" // (must be at call same as into "recv_data >> x >> y >> z >> orientation;"
@ -531,8 +519,6 @@ void WorldSession::HandleMoveWaterWalkAck(WorldPacket& /*recv_data*/)
void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data) void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
if(!_player->isAlive() || _player->isInCombat() ) if(!_player->isAlive() || _player->isInCombat() )
return; return;

View file

@ -38,8 +38,6 @@
void WorldSession::HandleTabardVendorActivateOpcode( WorldPacket & recv_data ) void WorldSession::HandleTabardVendorActivateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -66,8 +64,6 @@ void WorldSession::SendTabardVendorActivate( uint64 guid )
void WorldSession::HandleBankerActivateOpcode( WorldPacket & recv_data ) void WorldSession::HandleBankerActivateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
sLog.outDebug( "WORLD: Received CMSG_BANKER_ACTIVATE" ); sLog.outDebug( "WORLD: Received CMSG_BANKER_ACTIVATE" );
@ -97,8 +93,6 @@ void WorldSession::SendShowBank( uint64 guid )
void WorldSession::HandleTrainerListOpcode( WorldPacket & recv_data ) void WorldSession::HandleTrainerListOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -194,8 +188,6 @@ void WorldSession::SendTrainerList( uint64 guid, const std::string& strTitle )
void WorldSession::HandleTrainerBuySpellOpcode( WorldPacket & recv_data ) void WorldSession::HandleTrainerBuySpellOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint64 guid; uint64 guid;
uint32 spellId = 0; uint32 spellId = 0;
@ -261,8 +253,6 @@ void WorldSession::HandleTrainerBuySpellOpcode( WorldPacket & recv_data )
void WorldSession::HandleGossipHelloOpcode( WorldPacket & recv_data ) void WorldSession::HandleGossipHelloOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDebug( "WORLD: Received CMSG_GOSSIP_HELLO" ); sLog.outDebug( "WORLD: Received CMSG_GOSSIP_HELLO" );
uint64 guid; uint64 guid;
@ -306,8 +296,6 @@ void WorldSession::HandleGossipHelloOpcode( WorldPacket & recv_data )
void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data ) void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4);
sLog.outDebug("WORLD: CMSG_GOSSIP_SELECT_OPTION"); sLog.outDebug("WORLD: CMSG_GOSSIP_SELECT_OPTION");
uint32 option; uint32 option;
@ -319,8 +307,6 @@ void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
if(_player->PlayerTalkClass->GossipOptionCoded( option )) if(_player->PlayerTalkClass->GossipOptionCoded( option ))
{ {
// recheck
CHECK_PACKET_SIZE(recv_data,8+4+1);
sLog.outBasic("reading string"); sLog.outBasic("reading string");
recv_data >> code; recv_data >> code;
sLog.outBasic("string read: %s", code.c_str()); sLog.outBasic("string read: %s", code.c_str());
@ -351,8 +337,6 @@ void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
void WorldSession::HandleSpiritHealerActivateOpcode( WorldPacket & recv_data ) void WorldSession::HandleSpiritHealerActivateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDebug("WORLD: CMSG_SPIRIT_HEALER_ACTIVATE"); sLog.outDebug("WORLD: CMSG_SPIRIT_HEALER_ACTIVATE");
uint64 guid; uint64 guid;
@ -410,8 +394,6 @@ void WorldSession::SendSpiritResurrect()
void WorldSession::HandleBinderActivateOpcode( WorldPacket & recv_data ) void WorldSession::HandleBinderActivateOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 npcGUID; uint64 npcGUID;
recv_data >> npcGUID; recv_data >> npcGUID;
@ -483,8 +465,6 @@ void WorldSession::SendBindPoint(Creature *npc)
void WorldSession::HandleListStabledPetsOpcode( WorldPacket & recv_data ) void WorldSession::HandleListStabledPetsOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDebug("WORLD: Recv MSG_LIST_STABLED_PETS"); sLog.outDebug("WORLD: Recv MSG_LIST_STABLED_PETS");
uint64 npcGUID; uint64 npcGUID;
@ -559,8 +539,6 @@ void WorldSession::SendStablePet(uint64 guid )
void WorldSession::HandleStablePet( WorldPacket & recv_data ) void WorldSession::HandleStablePet( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
sLog.outDebug("WORLD: Recv CMSG_STABLE_PET"); sLog.outDebug("WORLD: Recv CMSG_STABLE_PET");
uint64 npcGUID; uint64 npcGUID;
@ -628,8 +606,6 @@ void WorldSession::HandleStablePet( WorldPacket & recv_data )
void WorldSession::HandleUnstablePet( WorldPacket & recv_data ) void WorldSession::HandleUnstablePet( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+4);
sLog.outDebug("WORLD: Recv CMSG_UNSTABLE_PET."); sLog.outDebug("WORLD: Recv CMSG_UNSTABLE_PET.");
uint64 npcGUID; uint64 npcGUID;
uint32 petnumber; uint32 petnumber;
@ -708,8 +684,6 @@ void WorldSession::HandleUnstablePet( WorldPacket & recv_data )
void WorldSession::HandleBuyStableSlot( WorldPacket & recv_data ) void WorldSession::HandleBuyStableSlot( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
sLog.outDebug("WORLD: Recv CMSG_BUY_STABLE_SLOT."); sLog.outDebug("WORLD: Recv CMSG_BUY_STABLE_SLOT.");
uint64 npcGUID; uint64 npcGUID;
@ -753,8 +727,6 @@ void WorldSession::HandleStableRevivePet( WorldPacket &/* recv_data */)
void WorldSession::HandleStableSwapPet( WorldPacket & recv_data ) void WorldSession::HandleStableSwapPet( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+4);
sLog.outDebug("WORLD: Recv CMSG_STABLE_SWAP_PET."); sLog.outDebug("WORLD: Recv CMSG_STABLE_SWAP_PET.");
uint64 npcGUID; uint64 npcGUID;
uint32 pet_number; uint32 pet_number;
@ -826,8 +798,6 @@ void WorldSession::HandleStableSwapPet( WorldPacket & recv_data )
void WorldSession::HandleRepairItemOpcode( WorldPacket & recv_data ) void WorldSession::HandleRepairItemOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+8+1);
sLog.outDebug("WORLD: CMSG_REPAIR_ITEM"); sLog.outDebug("WORLD: CMSG_REPAIR_ITEM");
uint64 npcGUID, itemGUID; uint64 npcGUID, itemGUID;

View file

@ -31,8 +31,6 @@
void WorldSession::HandlePetAction( WorldPacket & recv_data ) void WorldSession::HandlePetAction( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+2+2+8);
uint64 guid1; uint64 guid1;
uint32 data; uint32 data;
uint64 guid2; uint64 guid2;
@ -265,8 +263,6 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data )
void WorldSession::HandlePetNameQuery( WorldPacket & recv_data ) void WorldSession::HandlePetNameQuery( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+8);
sLog.outDetail( "HandlePetNameQuery. CMSG_PET_NAME_QUERY" ); sLog.outDetail( "HandlePetNameQuery. CMSG_PET_NAME_QUERY" );
uint32 petnumber; uint32 petnumber;
@ -305,8 +301,6 @@ void WorldSession::SendPetNameQuery( uint64 petguid, uint32 petnumber)
void WorldSession::HandlePetSetAction( WorldPacket & recv_data ) void WorldSession::HandlePetSetAction( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+4+2+2);
sLog.outDetail( "HandlePetSetAction. CMSG_PET_SET_ACTION" ); sLog.outDetail( "HandlePetSetAction. CMSG_PET_SET_ACTION" );
uint64 petguid; uint64 petguid;
@ -379,8 +373,6 @@ void WorldSession::HandlePetSetAction( WorldPacket & recv_data )
void WorldSession::HandlePetRename( WorldPacket & recv_data ) void WorldSession::HandlePetRename( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
sLog.outDetail( "HandlePetRename. CMSG_PET_RENAME" ); sLog.outDetail( "HandlePetRename. CMSG_PET_RENAME" );
uint64 petguid; uint64 petguid;
@ -391,7 +383,6 @@ void WorldSession::HandlePetRename( WorldPacket & recv_data )
recv_data >> petguid; recv_data >> petguid;
recv_data >> name; recv_data >> name;
CHECK_PACKET_SIZE(recv_data, recv_data.rpos() + 1);
recv_data >> isdeclined; recv_data >> isdeclined;
Pet* pet = ObjectAccessor::GetPet(petguid); Pet* pet = ObjectAccessor::GetPet(petguid);
@ -426,7 +417,6 @@ void WorldSession::HandlePetRename( WorldPacket & recv_data )
{ {
for(int i = 0; i < MAX_DECLINED_NAME_CASES; ++i) for(int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
{ {
CHECK_PACKET_SIZE(recv_data, recv_data.rpos() + 1);
recv_data >> declinedname.name[i]; recv_data >> declinedname.name[i];
} }
@ -458,8 +448,6 @@ void WorldSession::HandlePetRename( WorldPacket & recv_data )
void WorldSession::HandlePetAbandon( WorldPacket & recv_data ) void WorldSession::HandlePetAbandon( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; //pet guid recv_data >> guid; //pet guid
sLog.outDetail( "HandlePetAbandon. CMSG_PET_ABANDON pet guid is %u", GUID_LOPART(guid) ); sLog.outDetail( "HandlePetAbandon. CMSG_PET_ABANDON pet guid is %u", GUID_LOPART(guid) );
@ -490,8 +478,6 @@ void WorldSession::HandlePetAbandon( WorldPacket & recv_data )
void WorldSession::HandlePetUnlearnOpcode(WorldPacket& recvPacket) void WorldSession::HandlePetUnlearnOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,8);
sLog.outDetail("CMSG_PET_UNLEARN"); sLog.outDetail("CMSG_PET_UNLEARN");
uint64 guid; uint64 guid;
recvPacket >> guid; // Pet guid recvPacket >> guid; // Pet guid
@ -519,8 +505,6 @@ void WorldSession::HandlePetUnlearnOpcode(WorldPacket& recvPacket)
void WorldSession::HandlePetSpellAutocastOpcode( WorldPacket& recvPacket ) void WorldSession::HandlePetSpellAutocastOpcode( WorldPacket& recvPacket )
{ {
CHECK_PACKET_SIZE(recvPacket,8+2+2+1);
sLog.outDetail("CMSG_PET_SPELL_AUTOCAST"); sLog.outDetail("CMSG_PET_SPELL_AUTOCAST");
uint64 guid; uint64 guid;
uint32 spellid; uint32 spellid;
@ -565,7 +549,6 @@ void WorldSession::HandlePetCastSpellOpcode( WorldPacket& recvPacket )
{ {
sLog.outDetail("WORLD: CMSG_PET_CAST_SPELL"); sLog.outDetail("WORLD: CMSG_PET_CAST_SPELL");
CHECK_PACKET_SIZE(recvPacket,8+1+4+1);
uint64 guid; uint64 guid;
uint32 spellid; uint32 spellid;
uint8 cast_count; uint8 cast_count;
@ -660,8 +643,6 @@ void WorldSession::HandlePetLearnTalent( WorldPacket & recv_data )
{ {
sLog.outDebug("WORLD: CMSG_PET_LEARN_TALENT"); sLog.outDebug("WORLD: CMSG_PET_LEARN_TALENT");
CHECK_PACKET_SIZE(recv_data, 8+4+4);
uint64 guid; uint64 guid;
uint32 talent_id, requested_rank; uint32 talent_id, requested_rank;
recv_data >> guid >> talent_id >> requested_rank; recv_data >> guid >> talent_id >> requested_rank;
@ -674,8 +655,6 @@ void WorldSession::HandleLearnPreviewTalentsPet( WorldPacket & recv_data )
{ {
sLog.outDebug("CMSG_LEARN_PREVIEW_TALENTS_PET"); sLog.outDebug("CMSG_LEARN_PREVIEW_TALENTS_PET");
CHECK_PACKET_SIZE(recv_data, 8+4);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -686,8 +665,6 @@ void WorldSession::HandleLearnPreviewTalentsPet( WorldPacket & recv_data )
for(uint32 i = 0; i < talentsCount; ++i) for(uint32 i = 0; i < talentsCount; ++i)
{ {
CHECK_PACKET_SIZE(recv_data, recv_data.rpos()+4+4);
recv_data >> talentId >> talentRank; recv_data >> talentId >> talentRank;
_player->LearnPetTalent(guid, talentId, talentRank); _player->LearnPetTalent(guid, talentId, talentRank);

View file

@ -47,8 +47,6 @@
void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8+8+4+1+5*8+2+1+4+4);
sLog.outDebug("Received opcode CMSG_PETITION_BUY"); sLog.outDebug("Received opcode CMSG_PETITION_BUY");
//recv_data.hexlike(); //recv_data.hexlike();
@ -65,9 +63,6 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
recv_data >> unk2; // 0 recv_data >> unk2; // 0
recv_data >> name; // name recv_data >> name; // name
// recheck
CHECK_PACKET_SIZE(recv_data, 8+8+4+(name.size()+1)+5*8+2+1+4+4);
recv_data >> unk3; // 0 recv_data >> unk3; // 0
recv_data >> unk4; // 0 recv_data >> unk4; // 0
recv_data >> unk5; // 0 recv_data >> unk5; // 0
@ -236,8 +231,6 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
void WorldSession::HandlePetitionShowSignOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionShowSignOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8);
// ok // ok
sLog.outDebug("Received opcode CMSG_PETITION_SHOW_SIGNATURES"); sLog.outDebug("Received opcode CMSG_PETITION_SHOW_SIGNATURES");
//recv_data.hexlike(); //recv_data.hexlike();
@ -293,8 +286,6 @@ void WorldSession::HandlePetitionShowSignOpcode(WorldPacket & recv_data)
void WorldSession::HandlePetitionQueryOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionQueryOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 4+8);
sLog.outDebug("Received opcode CMSG_PETITION_QUERY"); // ok sLog.outDebug("Received opcode CMSG_PETITION_QUERY"); // ok
//recv_data.hexlike(); //recv_data.hexlike();
@ -370,8 +361,6 @@ void WorldSession::SendPetitionQueryOpcode(uint64 petitionguid)
void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
sLog.outDebug("Received opcode MSG_PETITION_RENAME"); // ok sLog.outDebug("Received opcode MSG_PETITION_RENAME"); // ok
//recv_data.hexlike(); //recv_data.hexlike();
@ -441,8 +430,6 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8+1);
sLog.outDebug("Received opcode CMSG_PETITION_SIGN"); // ok sLog.outDebug("Received opcode CMSG_PETITION_SIGN"); // ok
//recv_data.hexlike(); //recv_data.hexlike();
@ -571,8 +558,6 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8);
sLog.outDebug("Received opcode MSG_PETITION_DECLINE"); // ok sLog.outDebug("Received opcode MSG_PETITION_DECLINE"); // ok
//recv_data.hexlike(); //recv_data.hexlike();
@ -600,8 +585,6 @@ void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recv_data)
void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data) void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 4+8+8);
sLog.outDebug("Received opcode CMSG_OFFER_PETITION"); // ok sLog.outDebug("Received opcode CMSG_OFFER_PETITION"); // ok
//recv_data.hexlike(); //recv_data.hexlike();
@ -705,8 +688,6 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data) void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8);
sLog.outDebug("Received opcode CMSG_TURN_IN_PETITION"); // ok sLog.outDebug("Received opcode CMSG_TURN_IN_PETITION"); // ok
//recv_data.hexlike(); //recv_data.hexlike();
@ -853,7 +834,6 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
return; return;
} }
CHECK_PACKET_SIZE(recv_data, 8+5*4);
uint32 icon, iconcolor, border, bordercolor, backgroud; uint32 icon, iconcolor, border, bordercolor, backgroud;
recv_data >> backgroud >> icon >> iconcolor >> border >> bordercolor; recv_data >> backgroud >> icon >> iconcolor >> border >> bordercolor;
@ -891,8 +871,6 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
void WorldSession::HandlePetitionShowListOpcode(WorldPacket & recv_data) void WorldSession::HandlePetitionShowListOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data, 8);
sLog.outDebug("Received CMSG_PETITION_SHOWLIST"); // ok sLog.outDebug("Received CMSG_PETITION_SHOWLIST"); // ok
//recv_data.hexlike(); //recv_data.hexlike();

View file

@ -127,8 +127,6 @@ void WorldSession::SendNameQueryOpcodeFromDBCallBack(QueryResult *result, uint32
void WorldSession::HandleNameQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandleNameQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -152,8 +150,6 @@ void WorldSession::HandleQueryTimeOpcode( WorldPacket & /*recv_data*/ )
/// Only _static_ data send in this packet !!! /// Only _static_ data send in this packet !!!
void WorldSession::HandleCreatureQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandleCreatureQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+8);
uint32 entry; uint32 entry;
recv_data >> entry; recv_data >> entry;
@ -221,8 +217,6 @@ void WorldSession::HandleCreatureQueryOpcode( WorldPacket & recv_data )
/// Only _static_ data send in this packet !!! /// Only _static_ data send in this packet !!!
void WorldSession::HandleGameObjectQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandleGameObjectQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+8);
uint32 entryID; uint32 entryID;
recv_data >> entryID; recv_data >> entryID;
@ -333,8 +327,6 @@ void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recv_data*/)
void WorldSession::HandleNpcTextQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandleNpcTextQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4 + 8);
uint32 textID; uint32 textID;
uint64 guid; uint64 guid;
@ -421,8 +413,6 @@ void WorldSession::HandleNpcTextQueryOpcode( WorldPacket & recv_data )
void WorldSession::HandlePageTextQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandlePageTextQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
uint32 pageID; uint32 pageID;
recv_data >> pageID; recv_data >> pageID;

View file

@ -32,8 +32,6 @@
void WorldSession::HandleQuestgiverStatusQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandleQuestgiverStatusQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
uint8 questStatus = DIALOG_STATUS_NONE; uint8 questStatus = DIALOG_STATUS_NONE;
@ -80,8 +78,6 @@ void WorldSession::HandleQuestgiverStatusQueryOpcode( WorldPacket & recv_data )
void WorldSession::HandleQuestgiverHelloOpcode( WorldPacket & recv_data ) void WorldSession::HandleQuestgiverHelloOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -110,8 +106,6 @@ void WorldSession::HandleQuestgiverHelloOpcode( WorldPacket & recv_data )
void WorldSession::HandleQuestgiverAcceptQuestOpcode( WorldPacket & recv_data ) void WorldSession::HandleQuestgiverAcceptQuestOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+4+4);
uint64 guid; uint64 guid;
uint32 quest; uint32 quest;
uint32 unk1; uint32 unk1;
@ -207,8 +201,6 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode( WorldPacket & recv_data )
void WorldSession::HandleQuestgiverQueryQuestOpcode( WorldPacket & recv_data ) void WorldSession::HandleQuestgiverQueryQuestOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8+4+1);
uint64 guid; uint64 guid;
uint32 quest; uint32 quest;
uint8 unk1; uint8 unk1;
@ -232,8 +224,6 @@ void WorldSession::HandleQuestgiverQueryQuestOpcode( WorldPacket & recv_data )
void WorldSession::HandleQuestQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandleQuestQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 4);
uint32 quest; uint32 quest;
recv_data >> quest; recv_data >> quest;
sLog.outDebug( "WORLD: Received CMSG_QUEST_QUERY quest = %u",quest ); sLog.outDebug( "WORLD: Received CMSG_QUEST_QUERY quest = %u",quest );
@ -247,8 +237,6 @@ void WorldSession::HandleQuestQueryOpcode( WorldPacket & recv_data )
void WorldSession::HandleQuestgiverChooseRewardOpcode( WorldPacket & recv_data ) void WorldSession::HandleQuestgiverChooseRewardOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4);
uint32 quest, reward; uint32 quest, reward;
uint64 guid; uint64 guid;
recv_data >> guid >> quest >> reward; recv_data >> guid >> quest >> reward;
@ -305,8 +293,6 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode( WorldPacket & recv_data )
void WorldSession::HandleQuestgiverRequestRewardOpcode( WorldPacket & recv_data ) void WorldSession::HandleQuestgiverRequestRewardOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint32 quest; uint32 quest;
uint64 guid; uint64 guid;
recv_data >> guid >> quest; recv_data >> guid >> quest;
@ -339,8 +325,6 @@ void WorldSession::HandleQuestgiverCancel(WorldPacket& /*recv_data*/ )
void WorldSession::HandleQuestLogSwapQuest(WorldPacket& recv_data ) void WorldSession::HandleQuestLogSwapQuest(WorldPacket& recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,1+1);
uint8 slot1, slot2; uint8 slot1, slot2;
recv_data >> slot1 >> slot2; recv_data >> slot1 >> slot2;
@ -354,8 +338,6 @@ void WorldSession::HandleQuestLogSwapQuest(WorldPacket& recv_data )
void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recv_data) void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,1);
uint8 slot; uint8 slot;
recv_data >> slot; recv_data >> slot;
@ -379,8 +361,6 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recv_data)
void WorldSession::HandleQuestConfirmAccept(WorldPacket& recv_data) void WorldSession::HandleQuestConfirmAccept(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4);
uint32 quest; uint32 quest;
recv_data >> quest; recv_data >> quest;
@ -389,8 +369,6 @@ void WorldSession::HandleQuestConfirmAccept(WorldPacket& recv_data)
void WorldSession::HandleQuestgiverCompleteQuest(WorldPacket& recv_data) void WorldSession::HandleQuestgiverCompleteQuest(WorldPacket& recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,8+4);
uint32 quest; uint32 quest;
uint64 guid; uint64 guid;
recv_data >> guid >> quest; recv_data >> guid >> quest;
@ -427,8 +405,6 @@ void WorldSession::HandleQuestgiverQuestAutoLaunch(WorldPacket& /*recvPacket*/)
void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket) void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,4);
uint32 questId; uint32 questId;
recvPacket >> questId; recvPacket >> questId;
@ -486,8 +462,6 @@ void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket)
void WorldSession::HandleQuestPushResult(WorldPacket& recvPacket) void WorldSession::HandleQuestPushResult(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,8+1);
uint64 guid; uint64 guid;
uint8 msg; uint8 msg;
recvPacket >> guid >> msg; recvPacket >> guid >> msg;

View file

@ -28,8 +28,6 @@
void WorldSession::HandleLearnTalentOpcode( WorldPacket & recv_data ) void WorldSession::HandleLearnTalentOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,4+4);
uint32 talent_id, requested_rank; uint32 talent_id, requested_rank;
recv_data >> talent_id >> requested_rank; recv_data >> talent_id >> requested_rank;
@ -41,8 +39,6 @@ void WorldSession::HandleLearnPreviewTalents(WorldPacket& recvPacket)
{ {
sLog.outDebug("CMSG_LEARN_PREVIEW_TALENTS"); sLog.outDebug("CMSG_LEARN_PREVIEW_TALENTS");
CHECK_PACKET_SIZE(recvPacket, 4);
uint32 talentsCount; uint32 talentsCount;
recvPacket >> talentsCount; recvPacket >> talentsCount;
@ -50,8 +46,6 @@ void WorldSession::HandleLearnPreviewTalents(WorldPacket& recvPacket)
for(uint32 i = 0; i < talentsCount; ++i) for(uint32 i = 0; i < talentsCount; ++i)
{ {
CHECK_PACKET_SIZE(recvPacket, recvPacket.rpos()+4+4);
recvPacket >> talentId >> talentRank; recvPacket >> talentId >> talentRank;
_player->LearnTalent(talentId, talentRank); _player->LearnTalent(talentId, talentRank);
@ -62,8 +56,6 @@ void WorldSession::HandleLearnPreviewTalents(WorldPacket& recvPacket)
void WorldSession::HandleTalentWipeConfirmOpcode( WorldPacket & recv_data ) void WorldSession::HandleTalentWipeConfirmOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDetail("MSG_TALENT_WIPE_CONFIRM"); sLog.outDetail("MSG_TALENT_WIPE_CONFIRM");
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -94,8 +86,6 @@ void WorldSession::HandleTalentWipeConfirmOpcode( WorldPacket & recv_data )
void WorldSession::HandleUnlearnSkillOpcode(WorldPacket & recv_data) void WorldSession::HandleUnlearnSkillOpcode(WorldPacket & recv_data)
{ {
CHECK_PACKET_SIZE(recv_data,4);
uint32 skill_id; uint32 skill_id;
recv_data >> skill_id; recv_data >> skill_id;
GetPlayer()->SetSkill(skill_id, 0, 0); GetPlayer()->SetSkill(skill_id, 0, 0);

View file

@ -32,8 +32,6 @@
void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket) void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
{ {
// TODO: add targets.read() check // TODO: add targets.read() check
CHECK_PACKET_SIZE(recvPacket,1+1+1+4+8+4+1);
Player* pUser = _player; Player* pUser = _player;
// ignore for remote control state // ignore for remote control state
@ -160,8 +158,6 @@ void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleOpenItemOpcode(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()); sLog.outDetail("WORLD: CMSG_OPEN_ITEM packet, data length = %i",(uint32)recvPacket.size());
Player* pUser = _player; Player* pUser = _player;
@ -240,8 +236,6 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGameObjectUseOpcode( WorldPacket & recv_data ) void WorldSession::HandleGameObjectUseOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;
@ -265,8 +259,6 @@ void WorldSession::HandleGameObjectUseOpcode( WorldPacket & recv_data )
void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket) void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,8);
uint64 guid; uint64 guid;
recvPacket >> guid; recvPacket >> guid;
@ -288,8 +280,6 @@ void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket)
void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,1+4+1);
uint32 spellId; uint32 spellId;
uint8 cast_count, unk_flags; uint8 cast_count, unk_flags;
recvPacket >> cast_count; recvPacket >> cast_count;
@ -353,8 +343,6 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket) void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,5);
// ignore for remote control state (for player case) // ignore for remote control state (for player case)
Unit* mover = _player->m_mover; Unit* mover = _player->m_mover;
if(mover != _player && mover->GetTypeId()==TYPEID_PLAYER) if(mover != _player && mover->GetTypeId()==TYPEID_PLAYER)
@ -376,8 +364,6 @@ void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket)
void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket) void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,4);
uint32 spellId; uint32 spellId;
recvPacket >> spellId; recvPacket >> spellId;
@ -428,8 +414,6 @@ void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket)
void WorldSession::HandlePetCancelAuraOpcode( WorldPacket& recvPacket) void WorldSession::HandlePetCancelAuraOpcode( WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 8+4);
// ignore for remote control state // ignore for remote control state
if(_player->m_mover != _player) if(_player->m_mover != _player)
return; return;
@ -488,8 +472,6 @@ void WorldSession::HandleCancelAutoRepeatSpellOpcode( WorldPacket& /*recvPacket*
void WorldSession::HandleCancelChanneling( WorldPacket & /*recv_data */) void WorldSession::HandleCancelChanneling( WorldPacket & /*recv_data */)
{ {
/* /*
CHECK_PACKET_SIZE(recv_data, 4);
uint32 spellid; uint32 spellid;
recv_data >> spellid; recv_data >> spellid;
*/ */
@ -497,8 +479,6 @@ void WorldSession::HandleCancelChanneling( WorldPacket & /*recv_data */)
void WorldSession::HandleTotemDestroyed( WorldPacket& recvPacket) void WorldSession::HandleTotemDestroyed( WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket, 1);
// ignore for remote control state // ignore for remote control state
if(_player->m_mover != _player) if(_player->m_mover != _player)
return; return;
@ -534,8 +514,6 @@ void WorldSession::HandleSelfResOpcode( WorldPacket & /*recv_data*/ )
void WorldSession::HandleSpellClick( WorldPacket & recv_data ) void WorldSession::HandleSpellClick( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data, 8);
uint64 guid; uint64 guid;
recv_data >> guid; recv_data >> guid;

View file

@ -29,12 +29,8 @@
#include "WaypointMovementGenerator.h" #include "WaypointMovementGenerator.h"
#include "DestinationHolderImp.h" #include "DestinationHolderImp.h"
#include <cassert>
void WorldSession::HandleTaxiNodeStatusQueryOpcode( WorldPacket & recv_data ) void WorldSession::HandleTaxiNodeStatusQueryOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDebug( "WORLD: Received CMSG_TAXINODE_STATUS_QUERY" ); sLog.outDebug( "WORLD: Received CMSG_TAXINODE_STATUS_QUERY" );
uint64 guid; uint64 guid;
@ -70,8 +66,6 @@ void WorldSession::SendTaxiStatus( uint64 guid )
void WorldSession::HandleTaxiQueryAvailableNodes( WorldPacket & recv_data ) void WorldSession::HandleTaxiQueryAvailableNodes( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8);
sLog.outDebug( "WORLD: Received CMSG_TAXIQUERYAVAILABLENODES" ); sLog.outDebug( "WORLD: Received CMSG_TAXIQUERYAVAILABLENODES" );
uint64 guid; uint64 guid;
@ -158,8 +152,6 @@ bool WorldSession::SendLearnNewTaxiNode( Creature* unit )
void WorldSession::HandleActivateTaxiExpressOpcode ( WorldPacket & recv_data ) void WorldSession::HandleActivateTaxiExpressOpcode ( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4);
sLog.outDebug( "WORLD: Received CMSG_ACTIVATETAXIEXPRESS" ); sLog.outDebug( "WORLD: Received CMSG_ACTIVATETAXIEXPRESS" );
uint64 guid; uint64 guid;
@ -173,9 +165,6 @@ void WorldSession::HandleActivateTaxiExpressOpcode ( WorldPacket & recv_data )
sLog.outDebug( "WORLD: HandleActivateTaxiExpressOpcode - Unit (GUID: %u) not found or you can't interact with it.", uint32(GUID_LOPART(guid)) ); sLog.outDebug( "WORLD: HandleActivateTaxiExpressOpcode - Unit (GUID: %u) not found or you can't interact with it.", uint32(GUID_LOPART(guid)) );
return; return;
} }
// recheck
CHECK_PACKET_SIZE(recv_data,8+4+4+node_count*4);
std::vector<uint32> nodes; std::vector<uint32> nodes;
for(uint32 i = 0; i < node_count; ++i) for(uint32 i = 0; i < node_count; ++i)
@ -258,8 +247,6 @@ void WorldSession::HandleMoveSplineDoneOpcode(WorldPacket& /*recv_data*/)
void WorldSession::HandleActivateTaxiOpcode( WorldPacket & recv_data ) void WorldSession::HandleActivateTaxiOpcode( WorldPacket & recv_data )
{ {
CHECK_PACKET_SIZE(recv_data,8+4+4);
sLog.outDebug( "WORLD: Received CMSG_ACTIVATETAXI" ); sLog.outDebug( "WORLD: Received CMSG_ACTIVATETAXI" );
uint64 guid; uint64 guid;

View file

@ -457,8 +457,6 @@ void WorldSession::HandleCancelTradeOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,8);
if (GetPlayer()->pTrader) if (GetPlayer()->pTrader)
return; return;
@ -558,8 +556,6 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
void WorldSession::HandleSetTradeGoldOpcode(WorldPacket& recvPacket) void WorldSession::HandleSetTradeGoldOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,4);
if(!_player->pTrader) if(!_player->pTrader)
return; return;
@ -575,8 +571,6 @@ void WorldSession::HandleSetTradeGoldOpcode(WorldPacket& recvPacket)
void WorldSession::HandleSetTradeItemOpcode(WorldPacket& recvPacket) void WorldSession::HandleSetTradeItemOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,1+1+1);
if(!_player->pTrader) if(!_player->pTrader)
return; return;
@ -624,8 +618,6 @@ void WorldSession::HandleSetTradeItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleClearTradeItemOpcode(WorldPacket& recvPacket) void WorldSession::HandleClearTradeItemOpcode(WorldPacket& recvPacket)
{ {
CHECK_PACKET_SIZE(recvPacket,1);
if(!_player->pTrader) if(!_player->pTrader)
return; return;

View file

@ -173,43 +173,56 @@ bool WorldSession::Update(uint32 /*diff*/)
else else
{ {
OpcodeHandler& opHandle = opcodeTable[packet->GetOpcode()]; OpcodeHandler& opHandle = opcodeTable[packet->GetOpcode()];
switch (opHandle.status) try
{ {
case STATUS_LOGGEDIN: switch (opHandle.status)
if(!_player) {
{ case STATUS_LOGGEDIN:
// skip STATUS_LOGGEDIN opcode unexpected errors if player logout sometime ago - this can be network lag delayed packets if(!_player)
if(!m_playerRecentlyLogout) {
logUnexpectedOpcode(packet, "the player has not logged in yet"); // skip STATUS_LOGGEDIN opcode unexpected errors if player logout sometime ago - this can be network lag delayed packets
} if(!m_playerRecentlyLogout)
else if(_player->IsInWorld()) logUnexpectedOpcode(packet, "the player has not logged in yet");
(this->*opHandle.handler)(*packet); }
// lag can cause STATUS_LOGGEDIN opcodes to arrive after the player started a transfer else if(_player->IsInWorld())
break; (this->*opHandle.handler)(*packet);
case STATUS_TRANSFER: // lag can cause STATUS_LOGGEDIN opcodes to arrive after the player started a transfer
if(!_player)
logUnexpectedOpcode(packet, "the player has not logged in yet");
else if(_player->IsInWorld())
logUnexpectedOpcode(packet, "the player is still in world");
else
(this->*opHandle.handler)(*packet);
break;
case STATUS_AUTHED:
// prevent cheating with skip queue wait
if(m_inQueue)
{
logUnexpectedOpcode(packet, "the player not pass queue yet");
break; break;
} case STATUS_TRANSFER:
if(!_player)
logUnexpectedOpcode(packet, "the player has not logged in yet");
else if(_player->IsInWorld())
logUnexpectedOpcode(packet, "the player is still in world");
else
(this->*opHandle.handler)(*packet);
break;
case STATUS_AUTHED:
// prevent cheating with skip queue wait
if(m_inQueue)
{
logUnexpectedOpcode(packet, "the player not pass queue yet");
break;
}
m_playerRecentlyLogout = false; m_playerRecentlyLogout = false;
(this->*opHandle.handler)(*packet); (this->*opHandle.handler)(*packet);
break; break;
case STATUS_NEVER: case STATUS_NEVER:
sLog.outError( "SESSION: received not allowed opcode %s (0x%.4X)", sLog.outError( "SESSION: received not allowed opcode %s (0x%.4X)",
LookupOpcodeName(packet->GetOpcode()), LookupOpcodeName(packet->GetOpcode()),
packet->GetOpcode()); packet->GetOpcode());
break; break;
}
}
catch(ByteBufferException &exception)
{
sLog.outError("WorldSession::Update ByteBufferException occured while parsing a packet (opcode: %u) from client %s, accountid=%i. Skipped packet.",
packet->GetOpcode(), GetRemoteAddress().c_str(), GetAccountId());
if(sLog.IsOutDebug())
{
sLog.outDebug("Dumping error causing packet:");
packet->hexlike();
}
} }
} }
@ -629,7 +642,6 @@ void WorldSession::SaveTutorialsData()
void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi) void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
{ {
CHECK_PACKET_SIZE(data, data.rpos()+4+2+4+4+4+4+4);
data >> mi->flags; data >> mi->flags;
data >> mi->unk1; data >> mi->unk1;
data >> mi->time; data >> mi->time;
@ -643,7 +655,6 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
if(!data.readPackGUID(mi->t_guid)) if(!data.readPackGUID(mi->t_guid))
return; return;
CHECK_PACKET_SIZE(data, data.rpos()+4+4+4+4+4+1);
data >> mi->t_x; data >> mi->t_x;
data >> mi->t_y; data >> mi->t_y;
data >> mi->t_z; data >> mi->t_z;
@ -654,16 +665,13 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2))) || (mi->unk1 & 0x20)) if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2))) || (mi->unk1 & 0x20))
{ {
CHECK_PACKET_SIZE(data, data.rpos()+4);
data >> mi->s_pitch; data >> mi->s_pitch;
} }
CHECK_PACKET_SIZE(data, data.rpos()+4);
data >> mi->fallTime; data >> mi->fallTime;
if(mi->HasMovementFlag(MOVEMENTFLAG_JUMPING)) if(mi->HasMovementFlag(MOVEMENTFLAG_JUMPING))
{ {
CHECK_PACKET_SIZE(data, data.rpos()+4+4+4+4);
data >> mi->j_unk; data >> mi->j_unk;
data >> mi->j_sinAngle; data >> mi->j_sinAngle;
data >> mi->j_cosAngle; data >> mi->j_cosAngle;
@ -672,7 +680,6 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
if(mi->HasMovementFlag(MOVEMENTFLAG_SPLINE)) if(mi->HasMovementFlag(MOVEMENTFLAG_SPLINE))
{ {
CHECK_PACKET_SIZE(data, data.rpos()+4);
data >> mi->u_unk1; data >> mi->u_unk1;
} }
} }
@ -687,6 +694,12 @@ void WorldSession::ReadAddonsInfo(WorldPacket &data)
if(!size) if(!size)
return; return;
if(size > 0xFFFFF)
{
sLog.outError("WorldSession::ReadAddonsInfo addon info too big, size %u", size);
return;
}
uLongf uSize = size; uLongf uSize = size;
uint32 pos = data.rpos(); uint32 pos = data.rpos();
@ -711,10 +724,6 @@ void WorldSession::ReadAddonsInfo(WorldPacket &data)
addonInfo >> addonName; addonInfo >> addonName;
// recheck next addon data format correctness
if(addonInfo.rpos()+1+4+4 > addonInfo.size())
return;
addonInfo >> enabled >> crc >> unk1; addonInfo >> enabled >> crc >> unk1;
sLog.outDebug("ADDON: Name: %s, Enabled: 0x%x, CRC: 0x%x, Unknown2: 0x%x", addonName.c_str(), enabled, crc, unk1); sLog.outDebug("ADDON: Name: %s, Enabled: 0x%x, CRC: 0x%x, Unknown2: 0x%x", addonName.c_str(), enabled, crc, unk1);

View file

@ -44,8 +44,6 @@ class QueryResult;
class LoginQueryHolder; class LoginQueryHolder;
class CharacterHandler; class CharacterHandler;
#define CHECK_PACKET_SIZE(P,S) if((P).size() < (S)) return SizeError((P),(S));
#define NUM_ACCOUNT_DATA_TYPES 8 #define NUM_ACCOUNT_DATA_TYPES 8
struct AccountData struct AccountData

View file

@ -694,45 +694,55 @@ int WorldSocket::ProcessIncoming (WorldPacket* new_pct)
sWorldLog.Log ("\n\n"); sWorldLog.Log ("\n\n");
} }
// like one switch ;) try {
if (opcode == CMSG_PING) switch(opcode)
{
return HandlePing (*new_pct);
}
else if (opcode == CMSG_AUTH_SESSION)
{
if (m_Session)
{ {
sLog.outError ("WorldSocket::ProcessIncoming: Player send CMSG_AUTH_SESSION again"); case CMSG_PING:
return -1; return HandlePing (*new_pct);
case CMSG_AUTH_SESSION:
if (m_Session)
{
sLog.outError ("WorldSocket::ProcessIncoming: Player send CMSG_AUTH_SESSION again");
return -1;
}
return HandleAuthSession (*new_pct);
case CMSG_KEEP_ALIVE:
DEBUG_LOG ("CMSG_KEEP_ALIVE ,size: %d", new_pct->size ());
return 0;
default:
{
ACE_GUARD_RETURN (LockType, Guard, m_SessionLock, -1);
if (m_Session != NULL)
{
// OK ,give the packet to WorldSession
aptr.release ();
// WARNINIG here we call it with locks held.
// Its possible to cause deadlock if QueuePacket calls back
m_Session->QueuePacket (new_pct);
return 0;
}
else
{
sLog.outError ("WorldSocket::ProcessIncoming: Client not authed opcode = %u", uint32(opcode));
return -1;
}
}
}
}
catch(ByteBufferException &exception)
{
sLog.outError("WorldSocket::ProcessIncoming ByteBufferException occured while parsing an instant handled packet (opcode: %u) from client %s, accountid=%i. Disconnected client.",
opcode, GetRemoteAddress().c_str(), m_Session?m_Session->GetAccountId():-1);
if(sLog.IsOutDebug())
{
sLog.outDebug("Dumping error causing packet:");
new_pct->hexlike();
} }
return HandleAuthSession (*new_pct); return -1;
}
else if (opcode == CMSG_KEEP_ALIVE)
{
DEBUG_LOG ("CMSG_KEEP_ALIVE ,size: %d", new_pct->size ());
return 0;
}
else
{
ACE_GUARD_RETURN (LockType, Guard, m_SessionLock, -1);
if (m_Session != NULL)
{
// OK ,give the packet to WorldSession
aptr.release ();
// WARNINIG here we call it with locks held.
// Its possible to cause deadlock if QueuePacket calls back
m_Session->QueuePacket (new_pct);
return 0;
}
else
{
sLog.outError ("WorldSocket::ProcessIncoming: Client not authed opcode = %u", uint32(opcode));
return -1;
}
} }
ACE_NOTREACHED (return 0); ACE_NOTREACHED (return 0);
@ -755,24 +765,11 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)
BigNumber K; BigNumber K;
if (recvPacket.size () < (4 + 4 + 1 + 4 + 4 + 20))
{
sLog.outError ("WorldSocket::HandleAuthSession: wrong packet size");
return -1;
}
// Read the content of the packet // Read the content of the packet
recvPacket >> BuiltNumberClient; // for now no use recvPacket >> BuiltNumberClient; // for now no use
recvPacket >> unk2; recvPacket >> unk2;
recvPacket >> account; recvPacket >> account;
recvPacket >> unk3; recvPacket >> unk3;
if (recvPacket.size () < (4 + 4 + (account.size () + 1) + 4 + 4 + 20))
{
sLog.outError ("WorldSocket::HandleAuthSession: wrong packet size second check");
return -1;
}
recvPacket >> clientSeed; recvPacket >> clientSeed;
recvPacket.read (digest, 20); recvPacket.read (digest, 20);
@ -1001,12 +998,6 @@ int WorldSocket::HandlePing (WorldPacket& recvPacket)
uint32 ping; uint32 ping;
uint32 latency; uint32 latency;
if (recvPacket.size () < 8)
{
sLog.outError ("WorldSocket::_HandlePing wrong packet size");
return -1;
}
// Get the ping packet content // Get the ping packet content
recvPacket >> ping; recvPacket >> ping;
recvPacket >> latency; recvPacket >> latency;

View file

@ -766,6 +766,7 @@ bool AuthSocket::_HandleReconnectChallenge()
_login = (const char*)ch->I; _login = (const char*)ch->I;
_safelogin = _login; _safelogin = _login;
loginDatabase.escape_string(_safelogin);
QueryResult *result = loginDatabase.PQuery ("SELECT sessionkey FROM account WHERE username = '%s'", _safelogin.c_str ()); QueryResult *result = loginDatabase.PQuery ("SELECT sessionkey FROM account WHERE username = '%s'", _safelogin.c_str ());

View file

@ -24,6 +24,26 @@
#include "Log.h" #include "Log.h"
#include "Utilities/ByteConverter.h" #include "Utilities/ByteConverter.h"
class ByteBufferException
{
public:
ByteBufferException(bool add, size_t pos, size_t esize, size_t size):add(add), pos(pos), esize(esize), size(size)
{
PrintPosError();
}
void PrintPosError() const
{
sLog.outError("ERROR: Attempted to %s in ByteBuffer (pos: %lu size: %lu) value with size: %lu",(add ? "put" : "get"),(unsigned long)pos, (unsigned long)size, (unsigned long)esize);
}
private:
bool add;
size_t pos;
size_t esize;
size_t size;
};
class ByteBuffer class ByteBuffer
{ {
public: public:
@ -248,7 +268,8 @@ class ByteBuffer
template <typename T> T read(size_t pos) const template <typename T> T read(size_t pos) const
{ {
ASSERT(pos + sizeof(T) <= size() || PrintPosError(false, pos, sizeof(T))); if(pos + sizeof(T) > size())
throw ByteBufferException(false, pos, sizeof(T), size());
T val = *((T const*)&_storage[pos]); T val = *((T const*)&_storage[pos]);
EndianConvert(val); EndianConvert(val);
return val; return val;
@ -256,7 +277,8 @@ class ByteBuffer
void read(uint8 *dest, size_t len) void read(uint8 *dest, size_t len)
{ {
ASSERT(_rpos + len <= size() || PrintPosError(false, _rpos, len)); if(_rpos + len > size())
throw ByteBufferException(false, _rpos, len, size());
memcpy(dest, &_storage[_rpos], len); memcpy(dest, &_storage[_rpos], len);
_rpos += len; _rpos += len;
} }
@ -370,7 +392,8 @@ class ByteBuffer
void put(size_t pos, const uint8 *src, size_t cnt) void put(size_t pos, const uint8 *src, size_t cnt)
{ {
ASSERT(pos + cnt <= size() || PrintPosError(true, pos, cnt)); if(pos + cnt > size())
throw ByteBufferException(true, pos, cnt, size());
memcpy(&_storage[pos], src, cnt); memcpy(&_storage[pos], src, cnt);
} }
@ -459,14 +482,6 @@ class ByteBuffer
} }
protected: protected:
bool PrintPosError(bool add, size_t pos, size_t esize) const
{
sLog.outError("ERROR: Attempt %s in ByteBuffer (pos: %lu size: %lu) value with size: %lu",(add ? "put" : "get"),(unsigned long)pos, (unsigned long)size(), (unsigned long)esize);
// assert must fail after function call
return false;
}
size_t _rpos, _wpos; size_t _rpos, _wpos;
std::vector<uint8> _storage; std::vector<uint8> _storage;
}; };

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "8377" #define REVISION_NR "8378"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__