diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-08-05 14:13:17 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-08-17 14:02:07 +0200 |
commit | 33cfe6b2ebf05b21615764c99cf05d6ce46a5eb3 (patch) | |
tree | 09bf0dc9c0b907752b1efb53cfe1f0c7e8cb00ca /src/server/game/Handlers/MiscHandler.cpp | |
parent | 2624503e7ed25a5a93b930a52552669a0be3e2c3 (diff) |
Core/PacketIO: Fixed handling CMSG_UPDATE_ACCOUNT_DATA - compressed value is not a null-terminated string
(cherry picked from commit a4ecb2dfae8bb4a1eeccf9f97af5948078266a5c)
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 3b0197387b7..417c05720b5 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -706,19 +706,17 @@ void WorldSession::HandleUpdateAccountData(WorldPackets::ClientConfig::UserClien return; } - ByteBuffer dest(packet.Size, ByteBuffer::Resize{}); + std::string dest; + dest.resize(packet.Size); uLongf realSize = packet.Size; - if (uncompress(dest.contents(), &realSize, packet.CompressedData.contents(), packet.CompressedData.size()) != Z_OK) + if (uncompress(reinterpret_cast<Bytef*>(dest.data()), &realSize, packet.CompressedData.contents(), packet.CompressedData.size()) != Z_OK) { TC_LOG_ERROR("network", "UAD: Failed to decompress account data"); return; } - std::string adata; - dest >> adata; - - SetAccountData(AccountDataType(packet.DataType), packet.Time, adata); + SetAccountData(AccountDataType(packet.DataType), packet.Time, dest); } void WorldSession::HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request) |