diff --git a/src/kernel/syscalls/helpers.h b/src/kernel/syscalls/helpers.h index 95ca96a..c560453 100644 --- a/src/kernel/syscalls/helpers.h +++ b/src/kernel/syscalls/helpers.h @@ -25,6 +25,11 @@ T * construct_handle(j6_handle_t *id, Args... args) template j6_status_t get_handle(j6_handle_t id, j6_cap_t caps, T *&object) { + if (id == j6_handle_invalid) { + object = nullptr; + return j6_status_ok; + } + capability *capdata = g_cap_table.find(id); if (!capdata || capdata->type != T::type) return j6_err_invalid_arg; @@ -46,6 +51,11 @@ inline j6_status_t get_handle(j6_handle_t *id, j6_cap_t caps, T *&object) template <> inline j6_status_t get_handle(j6_handle_t id, j6_cap_t caps, obj::kobject *&object) { + if (id == j6_handle_invalid) { + object = nullptr; + return j6_status_ok; + } + capability *capdata = g_cap_table.find(id); if (!capdata) return j6_err_invalid_arg;