diff options
| author | Loki <lokirautio@gmail.com> | 2026-03-09 06:53:08 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-09 06:53:08 -0500 |
| commit | bda3b1078ac357b805156a8802a0649f7021716e (patch) | |
| tree | 838cf12ae598a810fb90a6e455f7fc03131f1342 /Minecraft.World/TextureAndGeometryPacket.cpp | |
| parent | a358a3caaee2a4781f910cfb440bd822ae73a7e5 (diff) | |
Port over RCE Patches from LCEMP (#1023)
* LCEMP RCE Fixes WIP
Based on https://github.com/LCEMP/LCEMP/commit/d017bfc30a68888bf5c79b23cf5c4f607cf828bf
* Update to LCEMP's ByteArrayIO version
Fixes compilation since ours was missing some revisions from LCEMP
* Add additional safety checks missed in first pass
* Remove duplicate recipe count check
Diffstat (limited to 'Minecraft.World/TextureAndGeometryPacket.cpp')
| -rw-r--r-- | Minecraft.World/TextureAndGeometryPacket.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/Minecraft.World/TextureAndGeometryPacket.cpp b/Minecraft.World/TextureAndGeometryPacket.cpp index bf5eccdb..1c920ee7 100644 --- a/Minecraft.World/TextureAndGeometryPacket.cpp +++ b/Minecraft.World/TextureAndGeometryPacket.cpp @@ -121,7 +121,20 @@ void TextureAndGeometryPacket::read(DataInputStream *dis) //throws IOException { textureName = dis->readUTF(); dwSkinID = static_cast<DWORD>(dis->readInt()); - dwTextureBytes = static_cast<DWORD>(dis->readShort()); + + short rawTextureBytes = dis->readShort(); + if (rawTextureBytes <= 0) + { + dwTextureBytes = 0; + } + else + { + dwTextureBytes = (DWORD)(unsigned short)rawTextureBytes; + if (dwTextureBytes > 65536) + { + dwTextureBytes = 0; + } + } if(dwTextureBytes>0) { @@ -134,7 +147,19 @@ void TextureAndGeometryPacket::read(DataInputStream *dis) //throws IOException } uiAnimOverrideBitmask = dis->readInt(); - dwBoxC = static_cast<DWORD>(dis->readShort()); + short rawBoxC = dis->readShort(); + if (rawBoxC <= 0) + { + dwBoxC = 0; + } + else + { + dwBoxC = (DWORD)(unsigned short)rawBoxC; + if (dwBoxC > 256) + { + dwBoxC = 0; // sane limit for skin boxes + } + } if(dwBoxC>0) { |
