From 671a17abd90757bbadf02a5d7468c6f6910809ba Mon Sep 17 00:00:00 2001 From: Himbeer Date: Thu, 1 Aug 2024 12:12:17 +0200 Subject: process: Ensure that ELF doesn't map important kernel memory --- src/lib/process.zig | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/lib/process.zig') 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; } -- cgit v1.2.3