|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
From 24a5d6b04e17d447cf122f02a8a2dedd843cce45 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
From: Lennart Poettering <lennart@poettering.net>
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Date: Tue, 26 Aug 2014 21:03:20 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Subject: [PATCH] util: make sure reset_all_signal_handlers() continues with
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
all other signal handlers when one sigaction() fails
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
After all, we usually don't check for failures here, and it is better to
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
do as much as we can...
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
src/shared/util.c | 9 +++++----
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
diff --git a/src/shared/util.c b/src/shared/util.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
index fc6f668726..4af2d3ceba 100644
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
--- a/src/shared/util.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+++ b/src/shared/util.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
@@ -937,7 +937,7 @@ int readlink_and_canonicalize(const char *p, char **r) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
int reset_all_signal_handlers(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
- int sig;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ int sig, r = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
for (sig = 1; sig < _NSIG; sig++) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
struct sigaction sa = {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
@@ -945,17 +945,18 @@ int reset_all_signal_handlers(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
.sa_flags = SA_RESTART,
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
};
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ /* These two cannot be caught... */
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
if (sig == SIGKILL || sig == SIGSTOP)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
continue;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
/* On Linux the first two RT signals are reserved by
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
* glibc, and sigaction() will return EINVAL for them. */
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
if ((sigaction(sig, &sa, NULL) < 0))
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
- if (errno != EINVAL)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
- return -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ if (errno != EINVAL && r == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ r = -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
- return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ return r;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
char *strstrip(char *s) {
|