From e994ebad9977ff3ed60a5c2217d5a3e077462125 Mon Sep 17 00:00:00 2001 From: Himbeer Date: Fri, 2 Aug 2024 14:34:47 +0200 Subject: syscall: Check user manageability in deviceyByKind() --- src/syscall.zig | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') 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| { -- cgit v1.2.3