util-linux/backport-login-never-send-signals-to-init.patch

42 lines
1.2 KiB
Diff
Raw Normal View History

From 4bbda92cdd0ceacc982f759d97d35b1617a8beba Mon Sep 17 00:00:00 2001
From: Samanta Navarro <ferivoz@riseup.net>
Date: Wed, 11 Jan 2023 11:57:21 +0000
Subject: [PATCH] login: never send signals to init
If the signal handler is triggered after a failed fork attempt, then
child_pid will be -1. This in turn leads to a positive test and a
subsequent call of kill(1, signal). If signal was SIGTERM, then there
will be also another kill(1, SIGHUP) call.
Test explicitly for a positive child_pid value to prevent these cases.
Signed-off-by: Samanta Navarro <ferivoz@riseup.net>
---
login-utils/login.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/login-utils/login.c b/login-utils/login.c
index 2c146b977..74bdf38a4 100644
--- a/login-utils/login.c
+++ b/login-utils/login.c
@@ -203,12 +203,12 @@ static void timedout(int sig __attribute__((__unused__)))
*/
static void sig_handler(int signal)
{
- if (child_pid)
+ if (child_pid > 0) {
kill(-child_pid, signal);
- else
+ if (signal == SIGTERM)
+ kill(-child_pid, SIGHUP); /* because the shell often ignores SIGTERM */
+ } else
got_sig = 1;
- if (signal == SIGTERM)
- kill(-child_pid, SIGHUP); /* because the shell often ignores SIGTERM */
}
/*
--
2.27.0