From d2b1aa48abf5ac14fbfc37c95561a3db4507f1c9 Mon Sep 17 00:00:00 2001 From: xdBronch <51252236+xdBronch@users.noreply.github.com> Date: Sun, 16 Nov 2025 22:01:36 -0500 Subject: [PATCH] sema: fix UAF in type mismatch error --- src/Sema.zig | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Sema.zig b/src/Sema.zig index 2309f2eee2..f47d9dcc7d 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -2643,11 +2643,13 @@ pub fn fail( } fn failWithTypeMismatch(sema: *Sema, block: *Block, src: LazySrcLoc, expected: Type, found: Type) CompileError { - const err_msg = try sema.typeMismatchErrMsg(src, expected, found); - errdefer err_msg.destroy(sema.gpa); - try addDeclaredHereNote(sema, err_msg, expected); - try addDeclaredHereNote(sema, err_msg, found); - return sema.failWithOwnedErrorMsg(block, err_msg); + return sema.failWithOwnedErrorMsg(block, msg: { + const msg = try sema.typeMismatchErrMsg(src, expected, found); + errdefer msg.destroy(sema.gpa); + try addDeclaredHereNote(sema, msg, expected); + try addDeclaredHereNote(sema, msg, found); + break :msg msg; + }); } pub fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Zcu.ErrorMsg) error{ AnalysisFail, OutOfMemory } {