diff options
author | Himbeer <himbeer@disroot.org> | 2024-08-02 14:34:47 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-08-02 14:34:47 +0200 |
commit | e994ebad9977ff3ed60a5c2217d5a3e077462125 (patch) | |
tree | eae60cc0c9398a0a8e6aa6c250dca6cd93865b70 | |
parent | 0fce6774bdf80f4d73310189ed9757cb78a26536 (diff) |
syscall: Check user manageability in deviceyByKind()
-rw-r--r-- | src/syscall.zig | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/syscall.zig b/src/syscall.zig index 32e8748..e3b54c9 100644 --- a/src/syscall.zig +++ b/src/syscall.zig @@ -135,12 +135,16 @@ fn threadId(proc: *const process.Info) usize { return proc.thread_id; } +pub const DeviceError = error{KindNotUserManagable}; + // devicesByKind(kind: hwinfo.DevKind, devices: [*]hwinfo.Dev, len: usize) !usize fn devicesByKind(trap_frame: *const TrapFrame) !usize { const kind: hwinfo.DevKind = @enumFromInt(trap_frame.general_purpose_registers[10]); const devices: [*]hwinfo.Dev = @ptrFromInt(trap_frame.general_purpose_registers[11]); const len = trap_frame.general_purpose_registers[12]; + if (!kind.isUserManagable()) return DeviceError.KindNotUserManagable; + var i: usize = 0; var devs = try hwinfo.byKind(kind); while (try devs.next()) |dev| { |