aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/TexturePacket.cpp
diff options
context:
space:
mode:
authorqwasdrizzel <145519042+qwasdrizzel@users.noreply.github.com>2026-03-16 21:44:26 -0500
committerGitHub <noreply@github.com>2026-03-16 21:44:26 -0500
commitce739f6045ec72127491286ea3f3f21e537c1b55 (patch)
treef33bd42a47c1b4a7b2153a7fb77127ee3b407db9 /Minecraft.World/TexturePacket.cpp
parent255a18fe8e9b57377975f82e2b227afe2a12eda0 (diff)
parent5a59f5d146b43811dde6a5a0245ee9875d7b5cd1 (diff)
Merge branch 'smartcmd:main' into main
Diffstat (limited to 'Minecraft.World/TexturePacket.cpp')
-rw-r--r--Minecraft.World/TexturePacket.cpp31
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]);