From 915f63b3f92bc17e4a5875623f46e167dcd17322 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Fri, 29 Mar 2024 22:42:12 +0100 Subject: [PATCH] fix a segfault when incomplete types array resizes while processing --- src/llvm_backend_debug.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/llvm_backend_debug.cpp b/src/llvm_backend_debug.cpp index c06026568..9ecacb4f4 100644 --- a/src/llvm_backend_debug.cpp +++ b/src/llvm_backend_debug.cpp @@ -652,7 +652,9 @@ gb_internal void lb_debug_complete_types(lbModule *m) { for_array(debug_incomplete_type_index, m->debug_incomplete_types) { TEMPORARY_ALLOCATOR_GUARD(); - auto const &idt = m->debug_incomplete_types[debug_incomplete_type_index]; + // NOTE(laytan): don't make this a pointer, the array could resize while in this iteration + // and cause a use-after-free at the end. + auto const idt = m->debug_incomplete_types[debug_incomplete_type_index]; GB_ASSERT(idt.type != nullptr); GB_ASSERT(idt.metadata != nullptr);