diff options
| author | qwasdrizzel <145519042+qwasdrizzel@users.noreply.github.com> | 2026-03-16 21:44:26 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-16 21:44:26 -0500 |
| commit | ce739f6045ec72127491286ea3f3f21e537c1b55 (patch) | |
| tree | f33bd42a47c1b4a7b2153a7fb77127ee3b407db9 /Minecraft.World/TexturePacket.cpp | |
| parent | 255a18fe8e9b57377975f82e2b227afe2a12eda0 (diff) | |
| parent | 5a59f5d146b43811dde6a5a0245ee9875d7b5cd1 (diff) | |
Merge branch 'smartcmd:main' into main
Diffstat (limited to 'Minecraft.World/TexturePacket.cpp')
| -rw-r--r-- | Minecraft.World/TexturePacket.cpp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/Minecraft.World/TexturePacket.cpp b/Minecraft.World/TexturePacket.cpp index 77dfdc38..94c195a0 100644 --- a/Minecraft.World/TexturePacket.cpp +++ b/Minecraft.World/TexturePacket.cpp @@ -10,13 +10,13 @@ TexturePacket::TexturePacket() { this->textureName = L""; this->dwBytes = 0; - this->pbData = NULL; + this->pbData = nullptr; } TexturePacket::~TexturePacket() { // can't free this - it's used elsewhere -// if(this->pbData!=NULL) +// if(this->pbData!=nullptr) // { // delete [] this->pbData; // } @@ -37,23 +37,32 @@ void TexturePacket::handle(PacketListener *listener) void TexturePacket::read(DataInputStream *dis) //throws IOException { textureName = dis->readUTF(); - dwBytes = (DWORD)dis->readShort(); + short rawBytes = dis->readShort(); + if (rawBytes <= 0) + { + dwBytes = 0; + return; + } + dwBytes = (DWORD)(unsigned short)rawBytes; + if (dwBytes > 65536) + { + dwBytes = 0; + return; + } + + this->pbData= new BYTE [dwBytes]; - if(dwBytes>0) + for(DWORD i=0;i<dwBytes;i++) { - this->pbData= new BYTE [dwBytes]; - - for(DWORD i=0;i<dwBytes;i++) - { - this->pbData[i] = dis->readByte(); - } + this->pbData[i] = dis->readByte(); } + } void TexturePacket::write(DataOutputStream *dos) //throws IOException { dos->writeUTF(textureName); - dos->writeShort((short)dwBytes); + dos->writeShort(static_cast<short>(dwBytes)); for(DWORD i=0;i<dwBytes;i++) { dos->writeByte(this->pbData[i]); |
