From 5f6767972f1550c54dd6f28267dc3d882f67d7ed Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sun, 1 May 2022 20:21:55 +0200 Subject: kernel/proc: `process_handle_get` for safely accepting handle ids --- src/kernel/proc.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/kernel/proc.c') diff --git a/src/kernel/proc.c b/src/kernel/proc.c index 79c4ed7..39f9e1f 100644 --- a/src/kernel/proc.c +++ b/src/kernel/proc.c @@ -208,6 +208,15 @@ handle_t process_find_handle(struct process *proc, handle_t start_at) { return handle; } +struct handle* +process_handle_get(struct process *p, handle_t id, enum handle_type type) { + struct handle *h; + if (id < 0 || id >= HANDLE_MAX) return NULL; + h = p->handles[id]; + if (h == NULL || h->type != type) return NULL; + return h; +} + void process_transition(struct process *p, enum process_state state) { enum process_state last = p->state; p->state = state; -- cgit v1.2.3