diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-05-31 23:55:55 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-06-10 01:28:58 +0200 |
commit | ce30c8dcb41dfe9264f79f30c7f51c0e74576638 (patch) | |
tree | 2d5c05e1225b43ec3d9870316899c1e87f7f381d /src/shared/pager.c | |
parent | 0c2c2a3aeb4c348e41d5d634c397faa3aa35cba7 (diff) |
tree-wide: whenever we fork off a foreign child process reset signal mask/handlers
Also, when the child is potentially long-running make sure to set a
death signal.
Also, ignore the result of the reset operations explicitly by casting
them to (void).
Diffstat (limited to 'src/shared/pager.c')
-rw-r--r-- | src/shared/pager.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/shared/pager.c b/src/shared/pager.c index 58b62fdccf..13f03e798b 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -30,6 +30,7 @@ #include "process-util.h" #include "macro.h" #include "terminal-util.h" +#include "signal-util.h" static pid_t pager_pid = 0; @@ -85,6 +86,9 @@ int pager_open(bool jump_to_end) { if (pager_pid == 0) { const char* less_opts; + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + dup2(fd[0], STDIN_FILENO); safe_close_pair(fd); @@ -178,6 +182,10 @@ int show_man_page(const char *desc, bool null_stdio) { if (pid == 0) { /* Child */ + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + if (null_stdio) { r = make_null_stdio(); if (r < 0) { |