authorgravatar for carl@astholm.seCarl Åstholm <carl@astholm.se> 2024-11-07 23:12:46+01:00
committergravatar for ian@ianjohnson.devIan Johnson <ian@ianjohnson.dev> 2024-12-13 08:49:45-05:00
logde3db8a1a6e9e7dce0489fd2eedca6e570bece79
treec53ff0d7611d84bb18794618f00f366b0c138e59
parentb352595aa2ede0c2fd53094da4123aac031335ec

Fix undefined behavior in package extraction code


1 files changed, 3 insertions(+), 3 deletions(-)

src/Package/Fetch.zig+3-3
......@@ -1695,7 +1695,7 @@ const HashedFile = struct {
16951695fn stripRoot(fs_path: []const u8, root_dir: []const u8) []const u8 {
16961696 if (root_dir.len == 0 or fs_path.len <= root_dir.len) return fs_path;
16971697
1698 if (std.mem.eql(u8, fs_path[0..root_dir.len], root_dir) and fs_path[root_dir.len] == fs.path.sep) {
1698 if (std.mem.eql(u8, fs_path[0..root_dir.len], root_dir) and fs.path.isSep(fs_path[root_dir.len])) {
16991699 return fs_path[root_dir.len + 1 ..];
17001700 }
17011701
......@@ -1810,8 +1810,8 @@ const FileHeader = struct {
18101810 }
18111811
18121812 pub fn isExecutable(self: *FileHeader) bool {
1813 return std.mem.eql(u8, self.header[0..shebang.len], shebang) or
1814 std.mem.eql(u8, self.header[0..elf_magic.len], elf_magic);
1813 return std.mem.eql(u8, self.header[0..@min(self.bytes_read, shebang.len)], shebang) or
1814 std.mem.eql(u8, self.header[0..@min(self.bytes_read, elf_magic.len)], elf_magic);
18151815 }
18161816};
18171817