From 901b6d9c5025a30b3d7a5ed0a2c00baf9cfb061d Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Tue, 29 Aug 2023 20:04:14 +1200 Subject: Validate the typed data before dereferencing the internal struct. (#8315) --- process.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'process.c') diff --git a/process.c b/process.c index 0de0b1f0a3..5468cf0846 100644 --- a/process.c +++ b/process.c @@ -1222,7 +1222,7 @@ rb_waitpid(rb_pid_t pid, int *st, int flags) VALUE status = rb_process_status_wait(pid, flags); if (NIL_P(status)) return 0; - struct rb_process_status *data = RTYPEDDATA_DATA(status); + struct rb_process_status *data = rb_check_typeddata(status, &rb_process_status_type); pid = data->pid; if (st) *st = data->status; @@ -4748,7 +4748,8 @@ rb_f_system(int argc, VALUE *argv, VALUE _) if (pid > 0) { VALUE status = rb_process_status_wait(pid, 0); - struct rb_process_status *data = RTYPEDDATA_DATA(status); + + struct rb_process_status *data = rb_check_typeddata(status, &rb_process_status_type); // Set the last status: rb_obj_freeze(status); -- cgit v1.2.3