aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-08-02 14:34:47 +0200
committerHimbeer <himbeer@disroot.org>2024-08-02 14:34:47 +0200
commite994ebad9977ff3ed60a5c2217d5a3e077462125 (patch)
treeeae60cc0c9398a0a8e6aa6c250dca6cd93865b70
parent0fce6774bdf80f4d73310189ed9757cb78a26536 (diff)
syscall: Check user manageability in deviceyByKind()
-rw-r--r--src/syscall.zig4
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| {