summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2022-07-08 17:08:34 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2022-08-19 18:45:35 +0200
commita9536fe9d0d2a01bf2b168e742736b014723c99b (patch)
treebd8b1d85c096ed67a84ea75a566eefff31497ca9 /include
parenta9989093d0a8832df326f543940560431e884338 (diff)
Fix: libfstree: actually use a full 32 bit hard link counter
The squashfs on-disk format uses 32 bit link counters, but the fstree used 16 bit ones. Because the link count also includes child nodes, this artificially limited the number of entries in a directory to ~64k files. This patch removes the limit by switching libfstree to 32 bit counters. Reported-by: Marvin Renich <mrvn@renich.org> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include')
-rw-r--r--include/fstree.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/fstree.h b/include/fstree.h
index 6628540..e227f02 100644
--- a/include/fstree.h
+++ b/include/fstree.h
@@ -64,8 +64,8 @@ struct tree_node_t {
sqfs_u32 gid;
sqfs_u32 inode_num;
sqfs_u32 mod_time;
+ sqfs_u32 link_count;
sqfs_u16 mode;
- sqfs_u16 link_count;
/* SquashFS inode refernce number. 32 bit offset of the meta data
block start (relative to inode table start), shifted left by 16