From bb207769288c0d1b8580d69ed9d869f4f571662e Mon Sep 17 00:00:00 2001 From: Timur Seitosmanov Date: Thu, 10 Sep 2026 13:53:01 +0200 Subject: [PATCH 1/3] SquashFS: root as an extended directory inode, symlink targets, block starts computed once - The reader cast the root inode to the basic directory type; mksquashfs stores a directory whose table exceeds one metadata block (the root included) as an extended directory inode with an index, so such images failed to open. - Symlink.TargetPath threw NotImplementedException, so any path lookup that landed on a symbolic link threw. The target is the UTF-8 path stored after the inode, relative to the link's directory unless absolute. - FileContentBuffer walked the block sizes from the first block on every read (O(blocks) per read; a random read near the end of a large file summed every size before it). The block starts are computed once when the file is opened. Tests: big-root.sqsh, built by mksquashfs at test time (1,000 files in the root and a symlink; no embedded fallback, so the tests are no-ops without the tool). Co-Authored-By: Claude Fable 5.1 --- Library/DiscUtils.SquashFs/File.cs | 3 ++ .../DiscUtils.SquashFs/FileContentBuffer.cs | 36 ++++++++--------- Library/DiscUtils.SquashFs/Symlink.cs | 26 +++++++++++- .../VfsSquashFileSystemReader.cs | 2 +- .../SquashFs/SquashFileSystemReaderTest.cs | 40 +++++++++++++++++++ Tests/LibraryTests/SquashFs/SquashFixtures.cs | 32 ++++++++++++++- 6 files changed, 115 insertions(+), 24 deletions(-) diff --git a/Library/DiscUtils.SquashFs/File.cs b/Library/DiscUtils.SquashFs/File.cs index 4414ca573..e25d28df8 100644 --- a/Library/DiscUtils.SquashFs/File.cs +++ b/Library/DiscUtils.SquashFs/File.cs @@ -43,6 +43,9 @@ public File(Context context, Inode inode, MetadataRef inodeRef) protected Context Context { get; } + /// Where the inode sits in the inode table; what follows the inode (a symlink's target, a file's block sizes) is read from here. + protected MetadataRef InodeRef => _inodeRef; + internal Inode Inode { get; } public DateTime LastAccessTimeUtc diff --git a/Library/DiscUtils.SquashFs/FileContentBuffer.cs b/Library/DiscUtils.SquashFs/FileContentBuffer.cs index 8acc197a8..7d2d8b1ef 100644 --- a/Library/DiscUtils.SquashFs/FileContentBuffer.cs +++ b/Library/DiscUtils.SquashFs/FileContentBuffer.cs @@ -35,6 +35,7 @@ internal class FileContentBuffer : Streams.Buffer private const uint InvalidFragmentKey = 0xFFFFFFFF; private readonly int[] _blockLengths; + private readonly long[] _blockStarts; private readonly Context _context; private readonly RegularInode _inode; @@ -64,6 +65,17 @@ public FileContentBuffer(Context context, RegularInode inode, MetadataRef inodeR _blockLengths[i] = EndianUtilities.ToInt32LittleEndian(lengthData.Slice(i * 4, 4)); } } + + // Where each block starts on disk: the blocks lie one after another from the inode's start, each as long + // as the low 24 bits of its size field say (a sparse block takes no room). Computed once, so a read at any + // position finds its block without walking the sizes from the first block. + _blockStarts = new long[numBlocks]; + var start = _inode.StartBlock; + for (var i = 0; i < numBlocks; ++i) + { + _blockStarts[i] = start; + start += _blockLengths[i] & 0x00FFFFFF; + } } public override bool CanRead => true; @@ -86,8 +98,6 @@ public override int Read(long pos, byte[] buffer, int offset, int count) var currentPos = pos; var totalRead = 0; var totalToRead = (int)Math.Min(_inode.FileSize - pos, count); - var currentBlock = 0; - long currentBlockDiskStart = _inode.StartBlock; while (totalRead < totalToRead) { if (currentPos >= startOfFragment) @@ -97,13 +107,7 @@ public override int Read(long pos, byte[] buffer, int offset, int count) return totalRead + read; } - var targetBlock = (int)(currentPos / _context.SuperBlock.BlockSize); - while (currentBlock < targetBlock) - { - currentBlockDiskStart += _blockLengths[currentBlock] & 0x7FFFFF; - ++currentBlock; - } - + var currentBlock = (int)(currentPos / _context.SuperBlock.BlockSize); var blockOffset = (int)(currentPos % _context.SuperBlock.BlockSize); if ((_blockLengths[currentBlock] & 0x00FFFFFF) == 0) { @@ -115,7 +119,7 @@ public override int Read(long pos, byte[] buffer, int offset, int count) continue; } - var block = _context.ReadBlock(currentBlockDiskStart, _blockLengths[currentBlock]); + var block = _context.ReadBlock(_blockStarts[currentBlock], _blockLengths[currentBlock]); var toCopy = Math.Min(block.Available - blockOffset, totalToRead - totalRead); System.Buffer.BlockCopy(block.Data, blockOffset, buffer, offset + totalRead, toCopy); @@ -148,8 +152,6 @@ public override int Read(long pos, Span buffer) var currentPos = pos; var totalRead = 0; var totalToRead = (int)Math.Min(_inode.FileSize - pos, buffer.Length); - var currentBlock = 0; - long currentBlockDiskStart = _inode.StartBlock; while (totalRead < totalToRead) { if (currentPos >= startOfFragment) @@ -158,13 +160,7 @@ public override int Read(long pos, Span buffer) return totalRead + read; } - var targetBlock = (int)(currentPos / _context.SuperBlock.BlockSize); - while (currentBlock < targetBlock) - { - currentBlockDiskStart += _blockLengths[currentBlock] & 0x7FFFFF; - ++currentBlock; - } - + var currentBlock = (int)(currentPos / _context.SuperBlock.BlockSize); var blockOffset = (int)(currentPos % _context.SuperBlock.BlockSize); if ((_blockLengths[currentBlock] & 0x00FFFFFF) == 0) { @@ -176,7 +172,7 @@ public override int Read(long pos, Span buffer) continue; } - var block = _context.ReadBlock(currentBlockDiskStart, _blockLengths[currentBlock]); + var block = _context.ReadBlock(_blockStarts[currentBlock], _blockLengths[currentBlock]); var toCopy = Math.Min(block.Available - blockOffset, totalToRead - totalRead); block.Data.AsSpan(blockOffset, toCopy).CopyTo(buffer[totalRead..]); diff --git a/Library/DiscUtils.SquashFs/Symlink.cs b/Library/DiscUtils.SquashFs/Symlink.cs index 6ca251540..0a6d8df6a 100644 --- a/Library/DiscUtils.SquashFs/Symlink.cs +++ b/Library/DiscUtils.SquashFs/Symlink.cs @@ -20,15 +20,37 @@ // DEALINGS IN THE SOFTWARE. // -using System; +using System.Text; using DiscUtils.Vfs; namespace DiscUtils.SquashFs; internal class Symlink : File, IVfsSymlink { + private string _targetPath; + public Symlink(Context context, Inode inode, MetadataRef inodeRef) : base(context, inode, inodeRef) { } - public string TargetPath => throw new NotImplementedException(); + /// + /// The link's target as stored: the UTF-8 path that follows the inode in the inode table, relative to the + /// link's directory unless it starts with a slash. + /// + public string TargetPath + { + get + { + if (_targetPath is null) + { + var inode = (SymlinkInode)Inode; + Context.InodeReader.SetPosition(InodeRef); + Context.InodeReader.Skip(inode.Size); + var target = new byte[inode.SymlinkSize]; + Context.InodeReader.Read(target); + _targetPath = Encoding.UTF8.GetString(target); + } + + return _targetPath; + } + } } \ No newline at end of file diff --git a/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs b/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs index aac64b615..38092f09c 100644 --- a/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs +++ b/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs @@ -122,7 +122,7 @@ public VfsSquashFileSystemReader(Stream stream, SquashFileSystemReaderOptions op // Bootstrap the root directory _context.InodeReader.SetPosition(_context.SuperBlock.RootInode); - var dirInode = (DirectoryInode)Inode.Read(_context.InodeReader); + var dirInode = Inode.Read(_context.InodeReader); RootDirectory = new Directory(_context, dirInode, _context.SuperBlock.RootInode); } diff --git a/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs b/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs index 8c4a28cb0..17f739834 100644 --- a/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs +++ b/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs @@ -22,6 +22,7 @@ using System; using System.IO; +using System.Linq; using System.Text; using DiscUtils.SquashFs; @@ -132,6 +133,45 @@ public void SparseFileLargerThan4GiB() Assert.Equal(0, stream.Read(tail, 0, tail.Length)); } + /// + /// mksquashfs stores a directory whose table exceeds one metadata block as an extended directory inode (with an + /// index), the root included; the reader used to cast the root to the basic inode type. The image is built by + /// mksquashfs at test time and has no embedded fallback, so the test is a no-op where the tool is absent. + /// + [Fact] + public void RootStoredAsExtendedDirectoryInode() + { + using var image = SquashFixtures.OpenIfBuilt("big-root.sqsh"); + if (image is null) + { + return; + } + + using var fs = new SquashFileSystemReader(image); + Assert.Equal(1001, fs.GetFileSystemEntries("").Count()); + Assert.True(fs.FileExists("entry-0999")); + Assert.Equal(0, fs.GetFileLength("entry-0999")); + } + + /// + /// A symbolic link's target is the path stored after its inode; a lookup through the link reaches the target + /// (the reader used to throw NotImplementedException from any path that landed on a symlink). + /// + [Fact] + public void SymlinkTargetIsRead() + { + using var image = SquashFixtures.OpenIfBuilt("big-root.sqsh"); + if (image is null) + { + return; + } + + using var fs = new SquashFileSystemReader(image); + Assert.True(fs.FileExists("link")); + Assert.Equal("first", ReadText(fs, "link")); + Assert.Equal(5, fs.GetFileLength("link")); + } + private static SquashFileSystemReader OpenImage(string name) => new(SquashFixtures.Open(name)); private static string ReadText(SquashFileSystemReader fs, string path) diff --git a/Tests/LibraryTests/SquashFs/SquashFixtures.cs b/Tests/LibraryTests/SquashFs/SquashFixtures.cs index 3e464b5af..fd40a6f7f 100644 --- a/Tests/LibraryTests/SquashFs/SquashFixtures.cs +++ b/Tests/LibraryTests/SquashFs/SquashFixtures.cs @@ -56,6 +56,23 @@ public static string Text } } + /// A seekable copy of an image that exists only freshly built: null where mksquashfs is absent. + public static Stream? OpenIfBuilt(string name) + { + var built = Built(); + if (built is null) + { + return null; + } + var image = new MemoryStream(); + using (var file = File.OpenRead(Path.Combine(built, name))) + { + file.CopyTo(image); + } + image.Position = 0; + return image; + } + /// A seekable copy of an image: freshly built when mksquashfs is available, else the embedded one. public static Stream Open(string name) { @@ -102,7 +119,10 @@ public static Stream Open(string name) /// two stored blocks and a fragment), sparse.bin (2 MiB of zeros then "end": sparse blocks, an extended inode), /// hard.txt and dir/hard2.txt (one file, two names: an extended inode). huge-sparse.sqsh: 1 MiB blocks; /// huge.bin, 4 GiB + 4 bytes, "mid" at 2 GiB + 5 and "end!" past the 4 GiB mark, nearly all of it sparse. - /// Both gzip at level 6, so the superblock carries compressor options. + /// Both gzip at level 6, so the superblock carries compressor options. big-root.sqsh (not embedded): 1,000 files + /// entry-0000 ("first") to entry-0999 (empty) in the root, whose directory table then exceeds one metadata block, + /// so mksquashfs stores the root as an extended directory inode with an index; and link, a symbolic link to + /// entry-0000. /// private static void Build(string work) { @@ -130,11 +150,21 @@ private static void Build(string work) Write(file, "end!"); } + var bigRoot = Path.Combine(work, "big-root"); + Directory.CreateDirectory(bigRoot); + for (var i = 0; i < 1000; i++) + { + File.WriteAllText(Path.Combine(bigRoot, $"entry-{i:D4}"), i == 0 ? "first" : "", Encoding.ASCII); + } + Run("ln", "-s", "entry-0000", Path.Combine(bigRoot, "link")); + var flags = new[] { "-noappend", "-no-xattrs", "-no-progress", "-quiet", "-mkfs-time", "0", "-all-time", "0", "-force-uid", "0", "-force-gid", "0" }; Run("mksquashfs", new[] { ext, Path.Combine(work, "extended-inodes.sqsh"), "-comp", "gzip", "-Xcompression-level", "6", "-b", "128K" }.Concat(flags).ToArray()); Run("mksquashfs", new[] { huge, Path.Combine(work, "huge-sparse.sqsh"), "-comp", "gzip", "-Xcompression-level", "6", "-b", "1M" }.Concat(flags).ToArray()); + Run("mksquashfs", new[] { bigRoot, Path.Combine(work, "big-root.sqsh"), "-comp", "gzip", "-b", "128K" }.Concat(flags).ToArray()); Directory.Delete(ext, recursive: true); Directory.Delete(huge, recursive: true); + Directory.Delete(bigRoot, recursive: true); } private static void Write(Stream stream, string ascii) From b578cc9e9eb56fce18c5e627c364e5c42f4f71fb Mon Sep 17 00:00:00 2001 From: Timur Seitosmanov Date: Thu, 10 Sep 2026 20:04:21 +0200 Subject: [PATCH 2/3] SquashFS: extended symlink inodes, symlink length validation, embedded test images - ExtendedSymlinkInode (type 10): the basic inode's fixed part and target path, then a 32-bit xattr index after the target, which Symlink.TargetPath reads so the whole inode is accounted for. mksquashfs writes this form only for a symlink with extended attributes, so the reader no longer refuses an image with an xattr table (nothing in it reads the table; the extended inodes skip their index). - SymlinkSize is checked against 65536 (mksquashfs reads a link into a 65536-byte buffer and refuses a longer one; the Linux driver rejects a target longer than a page) before allocating, and the target must lie within the inode table (MetablockReader.CurrentBlockStart stays before the directory table). - Tests run on embedded images where mksquashfs is absent, like the existing fixtures: big-root.sqsh and xattr-symlink.sqsh embedded, extended-inodes.sqsh re-embedded with mixed.bin (a compressed, a stored, a sparse and a compressed block, then a fragment) for the block-start calculation. Co-Authored-By: Claude Fable 5.1 --- .../ExtendedSymlinkInode.cs | 36 ++++++++ Library/DiscUtils.SquashFs/Inode.cs | 1 + Library/DiscUtils.SquashFs/MetablockReader.cs | 3 + Library/DiscUtils.SquashFs/Symlink.cs | 36 ++++++-- .../VfsSquashFileSystemReader.cs | 6 +- Tests/LibraryTests/LibraryTests.csproj | 2 + .../SquashFs/SquashFileSystemReaderTest.cs | 79 ++++++++++++++---- Tests/LibraryTests/SquashFs/SquashFixtures.cs | 69 ++++++++++----- Tests/LibraryTests/SquashFs/big-root.sqsh | Bin 0 -> 12288 bytes .../SquashFs/extended-inodes.sqsh | Bin 4096 -> 135168 bytes .../LibraryTests/SquashFs/xattr-symlink.sqsh | Bin 0 -> 4096 bytes 11 files changed, 186 insertions(+), 46 deletions(-) create mode 100644 Library/DiscUtils.SquashFs/ExtendedSymlinkInode.cs create mode 100644 Tests/LibraryTests/SquashFs/big-root.sqsh create mode 100644 Tests/LibraryTests/SquashFs/xattr-symlink.sqsh diff --git a/Library/DiscUtils.SquashFs/ExtendedSymlinkInode.cs b/Library/DiscUtils.SquashFs/ExtendedSymlinkInode.cs new file mode 100644 index 000000000..526f37d34 --- /dev/null +++ b/Library/DiscUtils.SquashFs/ExtendedSymlinkInode.cs @@ -0,0 +1,36 @@ +// +// Copyright (c) 2008-2011, Kenneth Bell +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +namespace DiscUtils.SquashFs; + +/// +/// An extended symbolic link inode (type 10). Its fixed part is the basic symlink inode's: the common header, the +/// link count and the target length. The target path follows, as in the basic form, and then a 32-bit index into +/// the xattr table, which the basic form does not have. mksquashfs writes this form for a symlink that carries +/// extended attributes. +/// +internal sealed class ExtendedSymlinkInode : SymlinkInode +{ + /// The xattr table index stored after the target path (0xFFFFFFFF for none); read along with the target. + public uint XattrIndex { get; internal set; } = uint.MaxValue; +} diff --git a/Library/DiscUtils.SquashFs/Inode.cs b/Library/DiscUtils.SquashFs/Inode.cs index 9ceee27d0..42708bfe9 100644 --- a/Library/DiscUtils.SquashFs/Inode.cs +++ b/Library/DiscUtils.SquashFs/Inode.cs @@ -117,6 +117,7 @@ private static Inode InstantiateType(InodeType type) InodeType.File => new RegularInode(), InodeType.ExtendedFile => new ExtendedFileInode(), InodeType.Symlink => new SymlinkInode(), + InodeType.ExtendedSymlink => new ExtendedSymlinkInode(), InodeType.CharacterDevice or InodeType.BlockDevice => new DeviceInode(), _ => throw new NotImplementedException($"Inode type not implemented: {type}"), }; diff --git a/Library/DiscUtils.SquashFs/MetablockReader.cs b/Library/DiscUtils.SquashFs/MetablockReader.cs index dd697e980..86844f4d7 100644 --- a/Library/DiscUtils.SquashFs/MetablockReader.cs +++ b/Library/DiscUtils.SquashFs/MetablockReader.cs @@ -39,6 +39,9 @@ public MetablockReader(Context context, long start) _start = start; } + /// Where the metadata block the reader is in starts in the image, in bytes. + public long CurrentBlockStart => _start + _currentBlockStart; + public void SetPosition(MetadataRef position) { SetPosition(position.Block, position.Offset); diff --git a/Library/DiscUtils.SquashFs/Symlink.cs b/Library/DiscUtils.SquashFs/Symlink.cs index 0a6d8df6a..19a463b96 100644 --- a/Library/DiscUtils.SquashFs/Symlink.cs +++ b/Library/DiscUtils.SquashFs/Symlink.cs @@ -20,6 +20,8 @@ // DEALINGS IN THE SOFTWARE. // + +using System.IO; using System.Text; using DiscUtils.Vfs; @@ -27,6 +29,12 @@ namespace DiscUtils.SquashFs; internal class Symlink : File, IVfsSymlink { + /// + /// The longest target a well-formed image can hold: mksquashfs reads a link into a 65536-byte buffer and + /// refuses a longer one, and the Linux driver rejects a target longer than a page (at most 64 KiB). + /// + public const int MaxTargetLength = 65536; + private string _targetPath; public Symlink(Context context, Inode inode, MetadataRef inodeRef) @@ -34,7 +42,9 @@ public Symlink(Context context, Inode inode, MetadataRef inodeRef) /// /// The link's target as stored: the UTF-8 path that follows the inode in the inode table, relative to the - /// link's directory unless it starts with a slash. + /// link's directory unless it starts with a slash. The length comes from the image, so it is checked against + /// before anything is allocated, and the bytes must lie within the inode table, + /// which the directory table follows directly. An extended inode keeps its xattr index after the target. /// public string TargetPath { @@ -43,14 +53,30 @@ public string TargetPath if (_targetPath is null) { var inode = (SymlinkInode)Inode; - Context.InodeReader.SetPosition(InodeRef); - Context.InodeReader.Skip(inode.Size); + if (inode.SymlinkSize > MaxTargetLength) + { + throw new IOException($"Corrupt symlink inode: target length {inode.SymlinkSize} exceeds {MaxTargetLength}"); + } + + var reader = Context.InodeReader; + reader.SetPosition(InodeRef); + reader.Skip(inode.Size); var target = new byte[inode.SymlinkSize]; - Context.InodeReader.Read(target); + var read = reader.Read(target); + if (inode is ExtendedSymlinkInode extended) + { + extended.XattrIndex = reader.ReadUInt(); + } + + if (read != target.Length || reader.CurrentBlockStart >= Context.SuperBlock.DirectoryTableStart) + { + throw new IOException("Corrupt symlink inode: target runs past the inode table"); + } + _targetPath = Encoding.UTF8.GetString(target); } return _targetPath; } } -} \ No newline at end of file +} diff --git a/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs b/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs index 38092f09c..64b6aea60 100644 --- a/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs +++ b/Library/DiscUtils.SquashFs/VfsSquashFileSystemReader.cs @@ -85,10 +85,8 @@ public VfsSquashFileSystemReader(Stream stream, SquashFileSystemReaderOptions op throw new IOException($"Unsupported compression {_context.SuperBlock.Compression} used"); } - if (_context.SuperBlock.ExtendedAttrsTableStart != -1) - { - throw new IOException("Unsupported extended attributes present"); - } + // An extended attribute table is left alone: the reader exposes no attributes, and the inodes of the files + // that carry them (the extended forms) are read like the others, their attribute index unused. if (_context.SuperBlock.MajorVersion != 4) { diff --git a/Tests/LibraryTests/LibraryTests.csproj b/Tests/LibraryTests/LibraryTests.csproj index 622ba8b08..014633ba8 100644 --- a/Tests/LibraryTests/LibraryTests.csproj +++ b/Tests/LibraryTests/LibraryTests.csproj @@ -25,6 +25,8 @@ + + diff --git a/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs b/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs index 17f739834..0dc1676e9 100644 --- a/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs +++ b/Tests/LibraryTests/SquashFs/SquashFileSystemReaderTest.cs @@ -135,19 +135,13 @@ public void SparseFileLargerThan4GiB() /// /// mksquashfs stores a directory whose table exceeds one metadata block as an extended directory inode (with an - /// index), the root included; the reader used to cast the root to the basic inode type. The image is built by - /// mksquashfs at test time and has no embedded fallback, so the test is a no-op where the tool is absent. + /// index), the root included; the reader used to cast the root to the basic inode type. big-root.sqsh holds + /// 1,000 files and a symlink in its root. /// [Fact] public void RootStoredAsExtendedDirectoryInode() { - using var image = SquashFixtures.OpenIfBuilt("big-root.sqsh"); - if (image is null) - { - return; - } - - using var fs = new SquashFileSystemReader(image); + using var fs = OpenImage("big-root.sqsh"); Assert.Equal(1001, fs.GetFileSystemEntries("").Count()); Assert.True(fs.FileExists("entry-0999")); Assert.Equal(0, fs.GetFileLength("entry-0999")); @@ -160,18 +154,71 @@ public void RootStoredAsExtendedDirectoryInode() [Fact] public void SymlinkTargetIsRead() { - using var image = SquashFixtures.OpenIfBuilt("big-root.sqsh"); - if (image is null) - { - return; - } - - using var fs = new SquashFileSystemReader(image); + using var fs = OpenImage("big-root.sqsh"); Assert.True(fs.FileExists("link")); Assert.Equal("first", ReadText(fs, "link")); Assert.Equal(5, fs.GetFileLength("link")); } + /// + /// A symlink that carries an extended attribute is stored as an extended symlink inode: the fixed part and the + /// target path of the basic form, then a 32-bit xattr index after the path. xattr-symlink.sqsh was made with + /// -xattrs-add, which puts an attribute on every inode, so its link is of that kind, and the image has an xattr + /// table (checked here from the superblock), which the reader used to refuse outright. + /// + [Fact] + public void ExtendedSymlinkInodeOfALinkWithAttributes() + { + using var image = SquashFixtures.Open("xattr-symlink.sqsh"); + var superblock = new byte[96]; + Assert.Equal(superblock.Length, image.Read(superblock, 0, superblock.Length)); + Assert.NotEqual(-1L, BitConverter.ToInt64(superblock, 56)); + image.Position = 0; + + using var fs = new SquashFileSystemReader(image); + Assert.Equal("hello", ReadText(fs, "target.txt")); + Assert.True(fs.FileExists("link")); + Assert.Equal("hello", ReadText(fs, "link")); + } + + /// + /// mixed.bin has, in order, a compressed block, a block stored as is (incompressible), a sparse block (all + /// zeros, taking no room on disk), another compressed block and a 100-byte tail in a fragment. Each block's + /// start on disk is the sum of the stored sizes before it, a sparse block counting nothing, so a read across + /// every boundary and a read of the whole file must come back exact. + /// + [Fact] + public void BlocksCompressedStoredSparseAndFragmentInOneFile() + { + var expected = SquashFixtures.Mixed; + using var fs = OpenImage("extended-inodes.sqsh"); + Assert.Equal(expected.Length, fs.GetFileLength("mixed.bin")); + using var stream = fs.OpenFile("mixed.bin", FileMode.Open, FileAccess.Read); + + const int block = 128 * 1024; + foreach (var offset in new[] { block - 50, 2 * block - 50, 3 * block - 50, 4 * block - 50 }) + { + var piece = new byte[100]; + stream.Position = offset; + Assert.Equal(piece.Length, stream.Read(piece, 0, piece.Length)); + var want = new byte[piece.Length]; + Array.Copy(expected, offset, want, 0, want.Length); + Assert.Equal(want, piece); + } + + stream.Position = 0; + var all = new byte[expected.Length]; + var total = 0; + while (total < all.Length) + { + var read = stream.Read(all, total, all.Length - total); + Assert.NotEqual(0, read); + total += read; + } + + Assert.Equal(expected, all); + } + private static SquashFileSystemReader OpenImage(string name) => new(SquashFixtures.Open(name)); private static string ReadText(SquashFileSystemReader fs, string path) diff --git a/Tests/LibraryTests/SquashFs/SquashFixtures.cs b/Tests/LibraryTests/SquashFs/SquashFixtures.cs index fd40a6f7f..7ff6f2cb9 100644 --- a/Tests/LibraryTests/SquashFs/SquashFixtures.cs +++ b/Tests/LibraryTests/SquashFs/SquashFixtures.cs @@ -56,21 +56,36 @@ public static string Text } } - /// A seekable copy of an image that exists only freshly built: null where mksquashfs is absent. - public static Stream? OpenIfBuilt(string name) + /// + /// The 524,388 bytes of mixed.bin: with 128 KB blocks, a block of text (compressed), a block of pseudo-random + /// bytes (incompressible, so mksquashfs stores it as is), a block of zeros (sparse), another block of text and + /// a 100-byte tail (a fragment). + /// + public static byte[] Mixed { - var built = Built(); - if (built is null) - { - return null; - } - var image = new MemoryStream(); - using (var file = File.OpenRead(Path.Combine(built, name))) + get { - file.CopyTo(image); + const int block = 128 * 1024; + var bytes = new byte[4 * block + 100]; + var text = Encoding.ASCII.GetBytes(Text); + Array.Copy(text, 0, bytes, 0, block); + var x = 0x9E3779B9u; // xorshift32: the same bytes on every machine + for (var i = block; i < 2 * block; i++) + { + x ^= x << 13; + x ^= x >> 17; + x ^= x << 5; + bytes[i] = (byte)x; + } + + Array.Copy(text, 0, bytes, 3 * block, block); + for (var i = 4 * block; i < bytes.Length; i++) + { + bytes[i] = (byte)('a' + i % 26); + } + + return bytes; } - image.Position = 0; - return image; } /// A seekable copy of an image: freshly built when mksquashfs is available, else the embedded one. @@ -117,12 +132,15 @@ public static Stream Open(string name) /// /// The recipe. extended-inodes.sqsh: 128 KB blocks; small.txt ("hello", a fragment), text.bin (300,000 bytes, /// two stored blocks and a fragment), sparse.bin (2 MiB of zeros then "end": sparse blocks, an extended inode), - /// hard.txt and dir/hard2.txt (one file, two names: an extended inode). huge-sparse.sqsh: 1 MiB blocks; + /// hard.txt and dir/hard2.txt (one file, two names: an extended inode), mixed.bin (: a + /// compressed, a stored, a sparse and a compressed block, then a fragment). huge-sparse.sqsh: 1 MiB blocks; /// huge.bin, 4 GiB + 4 bytes, "mid" at 2 GiB + 5 and "end!" past the 4 GiB mark, nearly all of it sparse. - /// Both gzip at level 6, so the superblock carries compressor options. big-root.sqsh (not embedded): 1,000 files - /// entry-0000 ("first") to entry-0999 (empty) in the root, whose directory table then exceeds one metadata block, - /// so mksquashfs stores the root as an extended directory inode with an index; and link, a symbolic link to - /// entry-0000. + /// Both gzip at level 6, so the superblock carries compressor options. big-root.sqsh: 1,000 files entry-0000 + /// ("first") to entry-0999 (empty) in the root, whose directory table then exceeds one metadata block, so + /// mksquashfs stores the root as an extended directory inode with an index; and link, a symbolic link to + /// entry-0000. xattr-symlink.sqsh: target.txt ("hello") and link, a symbolic link to it, built with + /// -xattrs-add, which puts an attribute on every inode: the link is an extended symlink inode and the image + /// has an xattr table. The other three are built with -no-xattrs. /// private static void Build(string work) { @@ -138,6 +156,7 @@ private static void Build(string work) } File.WriteAllText(Path.Combine(ext, "hard.txt"), "twice", Encoding.ASCII); Run("ln", Path.Combine(ext, "hard.txt"), Path.Combine(ext, "dir", "hard2.txt")); + File.WriteAllBytes(Path.Combine(ext, "mixed.bin"), Mixed); var huge = Path.Combine(work, "huge"); Directory.CreateDirectory(huge); @@ -158,13 +177,21 @@ private static void Build(string work) } Run("ln", "-s", "entry-0000", Path.Combine(bigRoot, "link")); - var flags = new[] { "-noappend", "-no-xattrs", "-no-progress", "-quiet", "-mkfs-time", "0", "-all-time", "0", "-force-uid", "0", "-force-gid", "0" }; - Run("mksquashfs", new[] { ext, Path.Combine(work, "extended-inodes.sqsh"), "-comp", "gzip", "-Xcompression-level", "6", "-b", "128K" }.Concat(flags).ToArray()); - Run("mksquashfs", new[] { huge, Path.Combine(work, "huge-sparse.sqsh"), "-comp", "gzip", "-Xcompression-level", "6", "-b", "1M" }.Concat(flags).ToArray()); - Run("mksquashfs", new[] { bigRoot, Path.Combine(work, "big-root.sqsh"), "-comp", "gzip", "-b", "128K" }.Concat(flags).ToArray()); + var xattrSymlink = Path.Combine(work, "xattr-symlink"); + Directory.CreateDirectory(xattrSymlink); + File.WriteAllText(Path.Combine(xattrSymlink, "target.txt"), "hello", Encoding.ASCII); + Run("ln", "-s", "target.txt", Path.Combine(xattrSymlink, "link")); + + var flags = new[] { "-noappend", "-no-progress", "-quiet", "-mkfs-time", "0", "-all-time", "0", "-force-uid", "0", "-force-gid", "0" }; + var noXattrs = new[] { "-no-xattrs" }.Concat(flags).ToArray(); + Run("mksquashfs", new[] { ext, Path.Combine(work, "extended-inodes.sqsh"), "-comp", "gzip", "-Xcompression-level", "6", "-b", "128K" }.Concat(noXattrs).ToArray()); + Run("mksquashfs", new[] { huge, Path.Combine(work, "huge-sparse.sqsh"), "-comp", "gzip", "-Xcompression-level", "6", "-b", "1M" }.Concat(noXattrs).ToArray()); + Run("mksquashfs", new[] { bigRoot, Path.Combine(work, "big-root.sqsh"), "-comp", "gzip", "-b", "128K" }.Concat(noXattrs).ToArray()); + Run("mksquashfs", new[] { xattrSymlink, Path.Combine(work, "xattr-symlink.sqsh"), "-comp", "gzip", "-b", "128K", "-xattrs-add", "trusted.test=1" }.Concat(flags).ToArray()); Directory.Delete(ext, recursive: true); Directory.Delete(huge, recursive: true); Directory.Delete(bigRoot, recursive: true); + Directory.Delete(xattrSymlink, recursive: true); } private static void Write(Stream stream, string ascii) diff --git a/Tests/LibraryTests/SquashFs/big-root.sqsh b/Tests/LibraryTests/SquashFs/big-root.sqsh new file mode 100644 index 0000000000000000000000000000000000000000..25b9bc75ab4cdea8ce3282eabfc64afba6e10670 GIT binary patch literal 12288 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≠Rl_H(ODpO`x`eX7dzdGn@hVgHvVt(bmU=$9~Z=S$C2lH$@+ z{@$1VRgLVa5&IftOgW$UP_PN_{&LO6ds0O2nWU|<`s33ID!nL&H#Ma*eZ6kNNqExTg%wruvARoNS^*rM$^G+Z0^Z!UA4joY4; z^QnNr>`+Bl-c}U6?YM<`kY~PgD(sZDTWWU|(~@NdYibNVWlP%q=2H2K&d(|&O6#uD z(w5H_*&DxJ!CGHuxlGN9)!njZ?=tTfgosN*`M=!AWZo%qXFkb$$$VjnAQ@XyvRe$U z4Q8j`f=-CA6svQL&Kzw-ddnb!`O)Rz>)Cw=10uf;z@mrhYcRy99%jutvuvxKxr1w~ zU8f#>BA41WGhf%l*d8}ktHh&U1y(Sh9H}HT9zNPdtaz&?cw4zM`&d9Aa$eYr)aX$r zU8|+q9!Kbp?<4JgJcFTj_Lp0noJ(fdk8jJ~Shzxu21qg>iRkUqiGDEHJ7RG+kd?(dy#xUEa?j@yk)ZD#k)Y>}Z(SZ)o1MF>%%l26&H=lQAwkT6-(?-SU)E9EWF4_v)+}WFjpHLdCkVNDhyrz zWdHC9B#RwXv{LYD8OHzV3Agj-I$vGIke{D8OnP@eD4lU#vIiUSJI`3~VZOpAsEwy4 z$elkX3qB-=(K&x?+rwWzg=8Y~I>#u3`=?JcEkd5-(N@0ETdIafb+8Wtp6dy^DjaTm zRG(f-3VR!MnoK=lc)#xgV)&Rt`3pgh6^8iqlqV^mvM)Py>`@2ifq&gbLH=~=%7*We z7=LbJpa)WatoD}c@b_^n^-EyVn3C(8Y9S!t$f5`P<_4Ot_x_7kM0R~PHH z4*t^f#0h=R;myq#Ex$Trvbs5I&^q>$ZdJ1%@{oSV`|}5zTdFaX$bMNpkw24eaiBVZ zKsxkz!YeDSvKmX|PAiZCjyqotZLWlogC0%q&t}(}yZjtBW=aZs?CD{w)(e-(`x_ra zt(uP^QKAT`4BuXQ>7S?P$jGkagd2k`LR+MU+6d(#4cvQPC#NBSdB+rY3E`La(uZ*x zR3Y_f7kN~LjS!IrpK*DEUkl5JS{zm?E1_r z8f50e5e@?5H>p$cTz1>W|lurDXGRjx#PKcs!xDVzO1ka?$omXGke zGU?4Y{bir*=MUGtDy+vlXx%(sFw%kYF1;?f%(&Wt+FAoEC){?O{%eiwUXd^v*SlLW z5$onQ2|iSZcn8_ep#{0sA>`5<^EVis)dO2CbC6%XjYf3#4CMJ^Ovy|VJFYoQqX-|)zyN0ydd7eYEBOUsCb0833&mB3Z1b2AvWW?SB#0dwwLL+e%Z21 zD-U11711p;41B!KF7|LH|7`crj$+f84|^{;uDm+tsC8F&$Roh4f&93{v1gAv^#c1+ zgS!5`AxE6=nwZx09Az?(++)T+XP5 zXN~VM&FeYlm>t(e-7s!Xy)bThA@o6A3jb{U(s0c_tAb6ZYN@WH6GF>UUe2nBB)EIG z1b^w&yt3)gT;{qP=@LC%`uxEH?6g-**m|5mFAm74{!_H+QXF5)bT~8DakDl%W`}7o z-|$+7gJZ#kXzJ?CTz=j-WbXcCO8L#;OSH^0$ww3ok8YjU#{ixJ3o%+1UB?kzq!q8~O4eE(b}ZBAzFr@4UBRrcy3H z(_*IL3mk!7hwiql=ofs6;84}3AoHQ0i<&}XpWuEy=zK-+AtvDh;jbO~`TSwqqK|o& z_L@{Z)2nk@L|+Wq(?1OK%MEb;Hc&1% z5G*&4CO5#615t7y{?iZ7;xakFUk=ET1N`J3d2#?(4xn}Y2o)-p1AXMcTse>+_aq0- zO9oP;(xFUg(z+i@ES2N-%5iYHqcw7zm)v2I+#ycx5cu06MGm|wcX&*0z(H;x`fqOJ z1~`95d{geZTn==X1HI(Hq`#N=R=&g%Ibe_6W3(I)Ee8z9JtfL_LHvgt_&2F^xu?H@ z(9D%ZA{Gt+)LQ-ji->8Vbc(ko>XXG=`Awpdyl}59m;ak#VZ7KD8CYask%2`978zJ% YV3C1E1{N7uWMGkjMFtib_~$Y3Z-qiPi~s-t literal 0 HcmV?d00001 diff --git a/Tests/LibraryTests/SquashFs/extended-inodes.sqsh b/Tests/LibraryTests/SquashFs/extended-inodes.sqsh index 728e52450b16228eec5567feb5abf74fae70c660..cc107953c7a7e1d7b84bb796872d8769f2da3de7 100644 GIT binary patch literal 135168 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ⅇBSpw?|m-riwh8wf)FxOYU|+Gu$1hYtl;Hqwg!wb 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 Zlm}vug3%Bd4S~@R7!85Z5TJ7i002*M{Jj7G delta 382 zcmZozz|o*kpHW;`%*Fr%Obm=bCL@C&!vQu%1{NTj10(SjD$)OQ|h$L0mkoUUja1aLK!87bXn++-|%vX6aoqy!&xs$+%r4StUQ z8x(h1Pjj5sDC@z@;HWM7D}BeiQC}pkqMI` zSrRuiUu~S?%226Ldvs@~rKLh67hBo_26g8`$E3i>!c}oWY4>E=#5PQubfrs3K%Sv} zw#Z(Ah80k+a)Ck!2r{8w6bD+kIl+NdFklyx*ZsyzGCcxP40_)g-!(%Ourz>_FJax@ P$jMaCwtWI8(^X~wfG}xW diff --git a/Tests/LibraryTests/SquashFs/xattr-symlink.sqsh b/Tests/LibraryTests/SquashFs/xattr-symlink.sqsh new file mode 100644 index 0000000000000000000000000000000000000000..2320e26d41544181e6ea692705d4bebca007bf1c GIT binary patch literal 4096 zcmc~OE-YqdfB_~3Mj(@sL6G49kYoX}H2b|YL%*}s)D3nn`%L*4-dzIQw>}a7k|ijEHifg z`pW62j>jv8`HR{9r~>sSr!+9QX`JP0v7A|XGs{6xjm@uZ(vd}9t_ba&)Fs4VtHt_H zpdkTjBP+-QKyU)e7XTTM(7<4-A%mp?UYC4cF3FQNsqhK@yMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( KGz12B2mk;)Lp^B# literal 0 HcmV?d00001 From 84bb43a9aae2b7be5291cc54408955d0c0c4a0cc Mon Sep 17 00:00:00 2001 From: Timur Seitosmanov Date: Thu, 10 Sep 2026 21:16:25 +0200 Subject: [PATCH 3/3] SquashFS: symlink target limit is SQUASHFS_SYMLINK_MAX (65535) Co-Authored-By: Claude Fable 5.1 --- Library/DiscUtils.SquashFs/Symlink.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Library/DiscUtils.SquashFs/Symlink.cs b/Library/DiscUtils.SquashFs/Symlink.cs index 19a463b96..33f7863ef 100644 --- a/Library/DiscUtils.SquashFs/Symlink.cs +++ b/Library/DiscUtils.SquashFs/Symlink.cs @@ -30,10 +30,11 @@ namespace DiscUtils.SquashFs; internal class Symlink : File, IVfsSymlink { /// - /// The longest target a well-formed image can hold: mksquashfs reads a link into a 65536-byte buffer and - /// refuses a longer one, and the Linux driver rejects a target longer than a page (at most 64 KiB). + /// The format's maximum target length: SQUASHFS_SYMLINK_MAX in squashfs_fs.h (squashfs-tools and the Linux + /// driver), 65535 bytes. mksquashfs enforces it when it reads a link (a 65536-byte readlink buffer, and a + /// result that fills it is refused), so no well-formed image stores a longer target. /// - public const int MaxTargetLength = 65536; + public const int MaxTargetLength = 65535; private string _targetPath;