From 2da23516ce16f603b716586dcb21db5b03784626 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Sat, 8 Apr 2023 13:00:11 +0300 Subject: Fix null pointer dereference in TRACE_TARGET * include/private/gc_pmark.h [ENABLE_TRACE] (TRACE_TARGET): Do not dereference GC_trace_addr if it is not a pointer to a heap object. --- include/private/gc_pmark.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/private/gc_pmark.h b/include/private/gc_pmark.h index 80afdec2..286bf179 100644 --- a/include/private/gc_pmark.h +++ b/include/private/gc_pmark.h @@ -224,7 +224,8 @@ GC_INLINE mse * GC_push_obj(ptr_t obj, hdr * hhdr, mse * mark_stack_top, # define TRACE(source, cmd) \ if (GC_trace_addr != 0 && (ptr_t)(source) == GC_trace_addr) cmd # define TRACE_TARGET(target, cmd) \ - if (GC_trace_addr != 0 && (target) == *(ptr_t *)GC_trace_addr) cmd + if (GC_trace_addr != NULL && GC_is_heap_ptr(GC_trace_addr) \ + && (target) == *(ptr_t *)GC_trace_addr) cmd #else # define TRACE(source, cmd) # define TRACE_TARGET(source, cmd) -- cgit v1.2.1