[8231] Use more safe destination buffer size for zlib compression.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
SilverIce 2009-07-22 15:58:43 +04:00 committed by VladimirMangos
parent d838f231ab
commit 0cf083eb55
3 changed files with 6 additions and 5 deletions

View file

@ -962,10 +962,11 @@ void WorldSession::HandleRequestAccountData(WorldPacket& recv_data)
uint32 size = adata->Data.size(); uint32 size = adata->Data.size();
ByteBuffer dest; uLongf destSize = compressBound(size);
dest.resize(size);
ByteBuffer dest;
dest.resize(destSize);
uLongf destSize = size;
if(size && compress(const_cast<uint8*>(dest.contents()), &destSize, (uint8*)adata->Data.c_str(), size) != Z_OK) if(size && compress(const_cast<uint8*>(dest.contents()), &destSize, (uint8*)adata->Data.c_str(), size) != Z_OK)
{ {
sLog.outDebug("RAD: Failed to compress account data"); sLog.outDebug("RAD: Failed to compress account data");

View file

@ -126,7 +126,7 @@ bool UpdateData::BuildPacket(WorldPacket *packet)
if (pSize > 100 ) // compress large packets if (pSize > 100 ) // compress large packets
{ {
uint32 destsize = pSize; uint32 destsize = compressBound(pSize);
packet->resize( destsize + sizeof(uint32) ); packet->resize( destsize + sizeof(uint32) );
packet->put<uint32>(0, pSize); packet->put<uint32>(0, pSize);

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 "8230" #define REVISION_NR "8231"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__