postgres.git / summary / log / commit / refs
commit c3510cfc8b401d61812713c4ccf040125dc7ce1b
Author: Nathan Bossart <nathan@postgresql.org>
Date: Fri Mar 07 21:23:09 2025 +0000
First released in: 18.0, 17.5
Assert that wrapper_handler()'s argument is within expected range.
pqsignal() already does a similar check, but strange Valgrind
reports have us wondering if wrapper_handler() is somehow getting
called with an invalid signal number.
Reported-by: Tomas Vondra <tomas@vondra.me>
Suggested-by: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/ace01111-f9ac-4f61-b1b1-8e9379415444%40vondra.me
Backpatch-through: 17
src/port/pqsignal.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/port/pqsignal.c b/src/port/pqsignal.c
index bbd28da0805..9dadce8357d 100644
--- a/src/port/pqsignal.c
+++ b/src/port/pqsignal.c
@@ -87,6 +87,9 @@ wrapper_handler(SIGNAL_ARGS)
{
int save_errno = errno;
+ Assert(postgres_signal_arg > 0);
+ Assert(postgres_signal_arg < PG_NSIG);
+
#ifndef FRONTEND
/*
@@ -139,6 +142,7 @@ pqsignal(int signo, pqsigfunc func)
pqsigfunc ret;
#endif
+ Assert(signo > 0);
Assert(signo < PG_NSIG);
if (func != SIG_IGN && func != SIG_DFL)
[parent: 5c8dcf948334]