diff options
| author | dearblue <[email protected]> | 2021-01-16 15:52:52 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2021-01-16 15:52:52 +0900 |
| commit | 0fdf5d9bb9ac06d3f205f9cab9e081dd473ebc58 (patch) | |
| tree | f6605851e02b437445eb8a97cfa624bcde466f22 /mrbgems/mruby-os-memsize | |
| parent | 0aa8db9a06157d8c10a88ad592a691b6da7a0533 (diff) | |
| download | mruby-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.c | 1 |
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); |
