aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-07-20 19:05:55 +0200
committerHimbeer <himbeer@disroot.org>2024-07-20 19:05:55 +0200
commit3084a07851b5c53ab1feded256b16e3a43704485 (patch)
tree1d5c4194fadb368d5537d60d068d3273d9f9ff18 /src
parentf62209d61bede0838a4f67f5ed4b4272978fe358 (diff)
resources: Enable user memory access temporarily for /process/create path reading
Diffstat (limited to 'src')
-rw-r--r--src/lib/resources.zig7
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,