diff options
author | Himbeer <himbeer@disroot.org> | 2024-07-20 19:05:55 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-07-20 19:05:55 +0200 |
commit | 3084a07851b5c53ab1feded256b16e3a43704485 (patch) | |
tree | 1d5c4194fadb368d5537d60d068d3273d9f9ff18 /src | |
parent | f62209d61bede0838a4f67f5ed4b4272978fe358 (diff) |
resources: Enable user memory access temporarily for /process/create path reading
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/resources.zig | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/resources.zig b/src/lib/resources.zig index 5c19aa2..71cd73b 100644 --- a/src/lib/resources.zig +++ b/src/lib/resources.zig @@ -77,7 +77,10 @@ const processfs = struct { } fn doCreate(pid: u16, thread_id: usize, data: usize) !usize { - const path_c: [*:0]const u8 = @ptrFromInt(data); + paging.setUserMemoryAccess(true); + defer paging.setUserMemoryAccess(false); + + const path_c: [*:0]const u8 = @ptrFromInt(data); // fixme: Kernel panic if null pointer const allocator = mem.page_allocator; @@ -104,6 +107,8 @@ const processfs = struct { .proc = proc, }; + paging.setUserMemoryAccess(false); + defer proc.allowResume(); while (try rd.readHooked(proc, ctx.buffer.items, .{ .hookFn = loadExe, |