From 6a24653f2531741fc47f133e64f2f28fe613afbf Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Sat, 30 Jul 2022 22:15:37 +0200 Subject: [PATCH] Add simple Endian check in PCKFileReader --- .../Classes/IO/PCK/PCKFileReader.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs b/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs index 04ecf83e..25071f9f 100644 --- a/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs +++ b/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs @@ -25,14 +25,17 @@ namespace PckStudio.Classes.IO private PCKFile ReadFileFromStream(Stream stream) { - _file = new PCKFile(ReadInt(stream)); + int pck_type = ReadInt(stream); + if (pck_type > 0xf00000) // 03 00 00 00 == true + throw new OverflowException(nameof(pck_type)); + _file = new PCKFile(pck_type); ReadLookUpTabel(stream); ReadFileEntries(stream); ReadFileContents(stream); return _file; } - internal void ReadLookUpTabel(Stream stream) + private void ReadLookUpTabel(Stream stream) { int count = ReadInt(stream); LUT = new List(count); @@ -46,7 +49,7 @@ namespace PckStudio.Classes.IO Console.WriteLine(ReadInt(stream)); // xml version num ?? } - internal void ReadFileEntries(Stream stream) + private void ReadFileEntries(Stream stream) { int file_entry_count = ReadInt(stream); for (; 0 < file_entry_count; file_entry_count--) @@ -58,7 +61,8 @@ namespace PckStudio.Classes.IO _file.Files.Add(entry); } } - internal void ReadFileContents(Stream stream) + + private void ReadFileContents(Stream stream) { _file.Files.ForEach( file => { int property_count = ReadInt(stream); @@ -71,7 +75,8 @@ namespace PckStudio.Classes.IO stream.Read(file.data, 0, file.size); }); } - internal string ReadString(Stream stream) + + private string ReadString(Stream stream) { int len = ReadInt(stream); string s = ReadString(stream, len, IsUsingLittleEndian ? Encoding.Unicode : Encoding.BigEndianUnicode);