summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-os-memsize
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-01-16 15:52:52 +0900
committerdearblue <[email protected]>2021-01-16 15:52:52 +0900
commit0fdf5d9bb9ac06d3f205f9cab9e081dd473ebc58 (patch)
treef6605851e02b437445eb8a97cfa624bcde466f22 /mrbgems/mruby-os-memsize
parent0aa8db9a06157d8c10a88ad592a691b6da7a0533 (diff)
downloadmruby-0fdf5d9bb9ac06d3f205f9cab9e081dd473ebc58.tar.gz
mruby-0fdf5d9bb9ac06d3f205f9cab9e081dd473ebc58.zip
Fix NULL pointer dereference with mruby-os-memsize and mruby-method
If it gets an insubstantial method object with `obj.method`, it will raise a `SIGSEGV` with `ObjectSpace.memsize_of(method)`.
Diffstat (limited to 'mrbgems/mruby-os-memsize')
-rw-r--r--mrbgems/mruby-os-memsize/src/memsize.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mrbgems/mruby-os-memsize/src/memsize.c b/mrbgems/mruby-os-memsize/src/memsize.c
index 0bdd2c516..abfd94268 100644
--- a/mrbgems/mruby-os-memsize/src/memsize.c
+++ b/mrbgems/mruby-os-memsize/src/memsize.c
@@ -33,6 +33,7 @@ os_memsize_of_method(mrb_state* mrb, mrb_value method_obj)
size_t size;
mrb_value proc_value = mrb_obj_iv_get(mrb, mrb_obj_ptr(method_obj),
mrb_intern_lit(mrb, "_proc"));
+ if (mrb_nil_p(proc_value)) return 0;
struct RProc *proc = mrb_proc_ptr(proc_value);
size = sizeof(struct RProc);