From 3be2fd3e08df426de834bee59971b468e56874a0 Mon Sep 17 00:00:00 2001 From: Deterous <138427222+Deterous@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:38:21 +0900 Subject: [PATCH 1/2] Fix XDVDFS bug --- SabreTools.Serialization.Readers/XDVDFS.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SabreTools.Serialization.Readers/XDVDFS.cs b/SabreTools.Serialization.Readers/XDVDFS.cs index 1127f363..70da7a7c 100644 --- a/SabreTools.Serialization.Readers/XDVDFS.cs +++ b/SabreTools.Serialization.Readers/XDVDFS.cs @@ -146,6 +146,10 @@ public static FourPartVersionType ParseFourPartVersionType(Stream data) var obj = new Dictionary(); + // Seek to current descriptor + data.SeekIfPossible(initialOffset + (((long)offset) * Constants.SectorSize), SeekOrigin.Begin); + + // Parse current descriptor var dd = ParseDirectoryDescriptor(data, initialOffset, offset, size); if (dd is null) return null; From 4f2dd0ac97950ff26ec649c93ba173de00b4c600 Mon Sep 17 00:00:00 2001 From: Deterous <138427222+Deterous@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:59:27 +0900 Subject: [PATCH 2/2] Move check and seek earlier --- SabreTools.Serialization.Readers/XDVDFS.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/SabreTools.Serialization.Readers/XDVDFS.cs b/SabreTools.Serialization.Readers/XDVDFS.cs index 70da7a7c..fe09b63b 100644 --- a/SabreTools.Serialization.Readers/XDVDFS.cs +++ b/SabreTools.Serialization.Readers/XDVDFS.cs @@ -165,13 +165,6 @@ public static FourPartVersionType ParseFourPartVersionType(Stream data) if (obj.ContainsKey(dr.ExtentOffset)) continue; - // Ensure offset is valid - if ((((long)dr.ExtentOffset) * Constants.SectorSize) + size > data.Length) - return null; - - // Seek to child descriptor - data.SeekIfPossible(initialOffset + (((long)dr.ExtentOffset) * Constants.SectorSize), SeekOrigin.Begin); - // Get all descriptors from child var descriptors = ParseDirectoryDescriptors(data, initialOffset, dr.ExtentOffset, dr.ExtentSize); if (descriptors is null)