diff options
author | Himbeer <himbeer@disroot.org> | 2024-08-01 12:12:17 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-08-01 12:12:17 +0200 |
commit | 671a17abd90757bbadf02a5d7468c6f6910809ba (patch) | |
tree | 2b2339f5ddb8f43b6c49507ae72f9cfa4ced3668 /src/lib/process.zig | |
parent | 22f46cb26cedf3837cd876d738236f9522ceb355 (diff) |
process: Ensure that ELF doesn't map important kernel memory
Diffstat (limited to 'src/lib/process.zig')
-rw-r--r-- | src/lib/process.zig | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lib/process.zig b/src/lib/process.zig index 265d9b3..b59d255 100644 --- a/src/lib/process.zig +++ b/src/lib/process.zig @@ -31,6 +31,7 @@ pub const ExeError = error{ BadBitLen, NotStaticExe, LengthOutOfBounds, + ReservedMemMapping, BranchPerms, WritableCode, }; @@ -275,6 +276,9 @@ pub fn create(allocator: Allocator, elf_buf: []align(@alignOf(elf.Elf64_Ehdr)) c .dirty = @bitCast(phdr.p_flags & elf.PF_W != 0), }; + if (vaddr >= @intFromPtr(paging.text_start) and vaddr < paging.alloc_start) { + return ExeError.ReservedMemMapping; + } if (!@bitCast(flags.read) and !@bitCast(flags.write) and !@bitCast(flags.exec)) { return ExeError.BranchPerms; } |