Group of 2 You'll notice
The sandbox boundary check now blocks backslash paths and uses a new statBigint helper to catch files swapped after path resolution
What
- The filesystem abstraction gained a
statBigintmethod alongside the existinglstatBigint, for stat calls that follow symlinks with bigint precision. - The directory-boundary escape check used for sandboxing now explicitly rejects any path containing a backslash, since backslashes make path resolution unreliable.
- After
realpathsucceeds, the check now also compares thedev/ino(device/inode) values, via the newstatBigint, between the original path and its resolved target before declaring it "inside" the sandbox boundary — catching the case where the file was swapped out between resolution and access.
Why This closes a gap where a maliciously crafted or swapped path could appear to resolve inside the sandbox boundary but actually point somewhere else by the time it's accessed; checking file identity by inode, not just by resolved path string, makes the boundary check harder to trick.