aboutsummaryrefslogtreecommitdiff
path: root/src/lib/process.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/process.zig')
-rw-r--r--src/lib/process.zig4
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;
}