From c0e09dfe5ff3630f914f1008941a1cfdacbd3db2 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 11 Feb 2021 17:38:53 +0000 Subject: bugfix: unignore SIGPIPE before execing a user-controlled process --- src/supervision/s6-svwait.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/supervision/s6-svwait.c') diff --git a/src/supervision/s6-svwait.c b/src/supervision/s6-svwait.c index 2fc8fcb..87b9fde 100644 --- a/src/supervision/s6-svwait.c +++ b/src/supervision/s6-svwait.c @@ -1,11 +1,15 @@ /* ISC license. */ #include +#include + #include #include #include +#include #include #include + #include "s6-svlisten.h" #define USAGE "s6-svwait [ -U | -u | -d | -D ] [ -a | -o ] [ -t timeout ] servicedir..." @@ -50,6 +54,7 @@ int main (int argc, char const *const *argv) uint16_t ids[argc] ; unsigned char upstate[bitarray_div8(argc)] ; unsigned char readystate[bitarray_div8(argc)] ; + if (sig_ignore(SIGPIPE) < 0) strerr_diefu1sys(111, "ignore SIGPIPE") ; s6_svlisten_init(argc, argv, &foo, ids, upstate, readystate, &deadline) ; e = s6_svlisten_loop(&foo, wantup, wantready, or, &deadline, -1, 0) ; if (e < 0) strerr_dief1x(102, "supervisor died") ; -- cgit v1.3.1