[compiler-rt] [MSan] Fix wrong unpoison size in SignalAction (PR #144071)

Kunqiu Chen via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 13 05:57:20 PDT 2025


https://github.com/Camsyn created https://github.com/llvm/llvm-project/pull/144071

MSan should unpoison the parameters of extended signal handlers. 
However, MSan unpoisoned the second parameter with the wrong size 
`sizeof(__sanitizer_sigaction)`, inconsistent with its real type 
`siginfo_t`.

This commit fixes this issue by correcting the size to 
`sizeof(__sanitizer_siginfo)`.

>From 4493cbfeb024f728862332af1c1dacb05d5f7c48 Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Fri, 13 Jun 2025 19:22:46 +0800
Subject: [PATCH] [MSan] Fix wrong unpoison size in SignalAction

MSan should unpoison the paramters of extended signal handlers.
However, MSan unpoisoned the second parameter with size
`sizeof(__sanitizer_sigaction)`, inconsistent with its real type
`siginfo_t`.

This commit fix this issue by correcting the size to
`sizeof(__sanitizer_siginfo)`..
---
 compiler-rt/lib/msan/msan_interceptors.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/compiler-rt/lib/msan/msan_interceptors.cpp b/compiler-rt/lib/msan/msan_interceptors.cpp
index 76255cdb742a3..f94d3cb79aa00 100644
--- a/compiler-rt/lib/msan/msan_interceptors.cpp
+++ b/compiler-rt/lib/msan/msan_interceptors.cpp
@@ -1127,7 +1127,7 @@ static void SignalAction(int signo, void *si, void *uc) {
   SignalHandlerScope signal_handler_scope;
   ScopedThreadLocalStateBackup stlsb;
   UnpoisonParam(3);
-  __msan_unpoison(si, sizeof(__sanitizer_sigaction));
+  __msan_unpoison(si, sizeof(__sanitizer_siginfo));
   __msan_unpoison(uc, ucontext_t_sz(uc));
 
   typedef void (*sigaction_cb)(int, void *, void *);



More information about the llvm-commits mailing list