aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/TexturePacket.cpp
diff options
context:
space:
mode:
authorLoki Rautio <lokirautio@gmail.com>2026-03-09 04:45:14 -0500
committerLoki Rautio <lokirautio@gmail.com>2026-03-09 04:45:14 -0500
commitd557ca2dfba5ffcca99ceb41b07d149f871964b5 (patch)
tree89ef5bd5fdb2a86fe10a5dead65b65bce8aa0a1d /Minecraft.World/TexturePacket.cpp
parent0c4f4599045edad935403e4d79d28f6b9aa95833 (diff)
LCEMP RCE fixes
Based on commit d017bfc30a68888bf5c79b23cf5c4f607cf828bf
Diffstat (limited to 'Minecraft.World/TexturePacket.cpp')
-rw-r--r--Minecraft.World/TexturePacket.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/Minecraft.World/TexturePacket.cpp b/Minecraft.World/TexturePacket.cpp
index eadcb3ed..94c195a0 100644
--- a/Minecraft.World/TexturePacket.cpp
+++ b/Minecraft.World/TexturePacket.cpp
@@ -37,17 +37,26 @@ void TexturePacket::handle(PacketListener *listener)
void TexturePacket::read(DataInputStream *dis) //throws IOException
{
textureName = dis->readUTF();
- dwBytes = static_cast<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