From 9a8398a18f364d3bcfc8d2744162d3572d9491e4 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Tue, 5 Sep 2023 13:34:46 -0400 Subject: Introduce rb_gc_remove_weak If we're during incremental marking, then Ruby code can execute that deallocates certain memory buffers that have been called with rb_gc_mark_weak, which can cause use-after-free bugs. --- internal/gc.h | 1 + 1 file changed, 1 insertion(+) (limited to 'internal') diff --git a/internal/gc.h b/internal/gc.h index be40a7a2f7..28b82f4196 100644 --- a/internal/gc.h +++ b/internal/gc.h @@ -236,6 +236,7 @@ VALUE rb_define_finalizer_no_check(VALUE obj, VALUE block); void rb_gc_mark_and_move(VALUE *ptr); void rb_gc_mark_weak(VALUE *ptr); +void rb_gc_remove_weak(VALUE parent_obj, VALUE *ptr); #define rb_gc_mark_and_move_ptr(ptr) do { \ VALUE _obj = (VALUE)*(ptr); \ -- cgit v1.2.3