[PATCH 00/18] Squashfs: fix a lot of AI issues and AI style issues

From: Phillip Lougher

Date: Sat Nov 07 2026 - 00:29:34 EST


This large patch-set is inspired by the recent spate of AI generated
code reports. Two of the patches directly fix AI reported issues, and
the rest have been found manually by a read-through and testing of the
code.

In all cases (except the last three) the patches deal with over-sights
relating to variable overflow, arithmetic overflow or just lack of
sanity checking of data read from disk. These can cause the code to
fail, and which could be used as a potential exploit.

The last three patches fix potential excessive memory use exploits. The
code in question was written in the early days when Squashfs filesystems
were small, but with very large filesystems it could try to allocate
memory in excess of 4 MiB, and up to 64 MiB.

The patches can be broken down as follows:

Patches 1 - 6 are preparatory patches. They convert old fashioned
#define macros into inline functions. These being typed make widths and
signedness explicit, and allow additional checking to be added in later
patches.

Patches 7 - 15 fix various issues relating to variable overflow,
arithmetic overflow and add additional sanity checking to prevent these
issues from occurring.

Patches 16 - 18 remove the excessive allocation of memory by introducing
caches, which limit the maximum usage to 4 pages.

All the patches (apart from the preparatory patches) have reproducers
which show how the existing code faults can be exploited, in some cases
which can allow a Squashfs filesystem to be tampered with to make
files readable by unprivileged users.

BTW checkpatch.pl complains about the '#' lines in the BASH script
reproducers. Let me know if that will cause problems.

fs/squashfs/block.c | 11 +-
fs/squashfs/cache.c | 8 +-
fs/squashfs/dir.c | 20 ++-
fs/squashfs/export.c | 143 +++++++++++------
fs/squashfs/file.c | 73 ++++++---
fs/squashfs/fragment.c | 109 ++++++++++---
fs/squashfs/id.c | 9 +-
fs/squashfs/inode.c | 43 ++---
fs/squashfs/namei.c | 21 ++-
fs/squashfs/squashfs.h | 6 +-
fs/squashfs/squashfs_fs.h | 101 ------------
fs/squashfs/squashfs_fs_i.h | 2 +-
fs/squashfs/squashfs_fs_sb.h | 25 ++-
fs/squashfs/squashfs_helpers.h | 350 +++++++++++++++++++++++++++++++++++++++++
fs/squashfs/super.c | 96 +++++++----
fs/squashfs/xattr.c | 49 ++++--
fs/squashfs/xattr.h | 21 ++-
fs/squashfs/xattr_id.c | 173 ++++++++++++++------
18 files changed, 913 insertions(+), 347 deletions(-)

Phillip
---
Squashfs maintainer and author