diff options
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; } |