From c5e3bb7917689bc9ed54fee23a143144fade802d Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Sat, 10 Oct 2026 08:24:49 -0400 Subject: add check for pcb retype for correct rootdir layout --- sys/syscall_untyped.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'sys/syscall_untyped.c') diff --git a/sys/syscall_untyped.c b/sys/syscall_untyped.c index 1ec21c7..c4378ea 100644 --- a/sys/syscall_untyped.c +++ b/sys/syscall_untyped.c @@ -1,8 +1,11 @@ +#include "api/process.h" #include "arch/x86_64/hal/obj.h" #include "hal/memory.h" +#include "hal/obj.h" #include "jove.h" #include "lib/printf.h" #include "proc/process.h" +#include "sys/objdir.h" #include "syscall.h" static int @@ -91,6 +94,10 @@ s_syscall_untyped_retype_pcb(jove_owned_obj_t *untyped_obj, return -errno; } CHECK_OBJPERM(objdir_obj, JOVE_PERM_ALL, "New PCB needs full access to it's root objdir!"); + if(!objdir_compare(objdir_obj.obj, PCB_ROOTDIR_SELF_I, obj_asunowned(untyped_obj))) { + klogf("Untyped is not in objdir entry %i\n", PCB_ROOTDIR_SELF_I); + return -EBADPATH; + } obj_settype(untyped_obj, JOVE_OBJ_PCB); return pcb_new(untyped_obj, untyped->limit, objdir_obj.obj); -- cgit v1.2.3