mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
improve SerializedFile read
This commit is contained in:
parent
df5d9f90d4
commit
07074b3deb
@ -93,9 +93,10 @@ namespace AssetStudio
|
|||||||
m_Types.Add(ReadSerializedType());
|
m_Types.Add(ReadSerializedType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var bigIDEnabled = 0;
|
||||||
if (header.m_Version >= 7 && header.m_Version < 14)
|
if (header.m_Version >= 7 && header.m_Version < 14)
|
||||||
{
|
{
|
||||||
var bigIDEnabled = reader.ReadInt32();
|
bigIDEnabled = reader.ReadInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
//ReadObjects
|
//ReadObjects
|
||||||
@ -106,7 +107,11 @@ namespace AssetStudio
|
|||||||
for (int i = 0; i < objectCount; i++)
|
for (int i = 0; i < objectCount; i++)
|
||||||
{
|
{
|
||||||
var objectInfo = new ObjectInfo();
|
var objectInfo = new ObjectInfo();
|
||||||
if (header.m_Version < 14)
|
if (bigIDEnabled != 0)
|
||||||
|
{
|
||||||
|
objectInfo.m_PathID = reader.ReadInt64();
|
||||||
|
}
|
||||||
|
else if (header.m_Version < 14)
|
||||||
{
|
{
|
||||||
objectInfo.m_PathID = reader.ReadInt32();
|
objectInfo.m_PathID = reader.ReadInt32();
|
||||||
}
|
}
|
||||||
@ -349,19 +354,31 @@ namespace AssetStudio
|
|||||||
public static bool IsSerializedFile(EndianBinaryReader reader)
|
public static bool IsSerializedFile(EndianBinaryReader reader)
|
||||||
{
|
{
|
||||||
var fileSize = reader.BaseStream.Length;
|
var fileSize = reader.BaseStream.Length;
|
||||||
if (fileSize < 16)
|
if (fileSize < 20)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var m_MetadataSize = reader.ReadUInt32();
|
var m_MetadataSize = reader.ReadUInt32();
|
||||||
var m_FileSize = reader.ReadUInt32();
|
long m_FileSize = reader.ReadUInt32();
|
||||||
|
var m_Version = reader.ReadUInt32();
|
||||||
|
long m_DataOffset = reader.ReadUInt32();
|
||||||
|
var m_Endianess = reader.ReadByte();
|
||||||
|
var m_Reserved = reader.ReadBytes(3);
|
||||||
|
if (m_Version >= 22)
|
||||||
|
{
|
||||||
|
if (fileSize < 48)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
m_MetadataSize = reader.ReadUInt32();
|
||||||
|
m_FileSize = reader.ReadInt64();
|
||||||
|
m_DataOffset = reader.ReadInt64();
|
||||||
|
}
|
||||||
if (m_FileSize != fileSize)
|
if (m_FileSize != fileSize)
|
||||||
{
|
{
|
||||||
reader.Position = 0;
|
reader.Position = 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var m_Version = reader.ReadUInt32();
|
|
||||||
var m_DataOffset = reader.ReadUInt32();
|
|
||||||
if (m_DataOffset > fileSize)
|
if (m_DataOffset > fileSize)
|
||||||
{
|
{
|
||||||
reader.Position = 0;
|
reader.Position = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user