mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[8389] Implement check really read received packet size and warning it not all data read.
* This let more easy catch packet structure chnages at client switch. * Fixed structure CMSG_GUILD_BANK_SWAP_ITEMS * Fixed structure CMSG_SPLIT_ITEM, CMSG_SELL_ITEM * Added read data amount fixes for some other packets. Thanks to TOM_RUS in help check correct packets structure. Note: not all packets possible fixed. Please report for not fixed cases at errors: "opcode %s (0x%.4X) have unprocessed tail data (read stop at %u from %u)"
This commit is contained in:
parent
17b94e1e09
commit
35121cdd34
12 changed files with 82 additions and 41 deletions
|
|
@ -30,7 +30,8 @@
|
|||
void WorldSession::HandleSplitItemOpcode( WorldPacket & recv_data )
|
||||
{
|
||||
//sLog.outDebug("WORLD: CMSG_SPLIT_ITEM");
|
||||
uint8 srcbag, srcslot, dstbag, dstslot, count;
|
||||
uint8 srcbag, srcslot, dstbag, dstslot;
|
||||
uint32 count;
|
||||
|
||||
recv_data >> srcbag >> srcslot >> dstbag >> dstslot >> count;
|
||||
//sLog.outDebug("STORAGE: receive srcbag = %u, srcslot = %u, dstbag = %u, dstslot = %u, count = %u", srcbag, srcslot, dstbag, dstslot, count);
|
||||
|
|
@ -488,12 +489,9 @@ void WorldSession::HandleSellItemOpcode( WorldPacket & recv_data )
|
|||
{
|
||||
sLog.outDebug( "WORLD: Received CMSG_SELL_ITEM" );
|
||||
uint64 vendorguid, itemguid;
|
||||
uint8 _count;
|
||||
uint32 count;
|
||||
|
||||
recv_data >> vendorguid >> itemguid >> _count;
|
||||
|
||||
// prevent possible overflow, as mangos uses uint32 for item count
|
||||
uint32 count = _count;
|
||||
recv_data >> vendorguid >> itemguid >> count;
|
||||
|
||||
if(!itemguid)
|
||||
return;
|
||||
|
|
@ -969,6 +967,8 @@ void WorldSession::HandleItemNameQueryOpcode(WorldPacket & recv_data)
|
|||
{
|
||||
uint32 itemid;
|
||||
recv_data >> itemid;
|
||||
recv_data.read_skip<uint64>(); // guid
|
||||
|
||||
sLog.outDebug("WORLD: CMSG_ITEM_NAME_QUERY %u", itemid);
|
||||
ItemPrototype const *pProto = objmgr.GetItemPrototype( itemid );
|
||||
if( pProto )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue