|
Message-Id: <20180205143837.26009-1-amonakov@ispras.ru> Date: Mon, 5 Feb 2018 17:38:37 +0300 From: Alexander Monakov <amonakov@...ras.ru> To: musl@...ts.openwall.com Subject: [PATCH] re-fix child reaping in wordexp Do not retry waitpid if the child was terminated by a signal. Do not examine status: since we are not passing any flags, we will not receive stop or continue notifications. --- In general retrying waitpid on EINTR is not robust in case pid reuse is possible, but fixing that requires changing waitpid call sites to only do that with signals blocked (where that's not already the case). src/misc/wordexp.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/misc/wordexp.c b/src/misc/wordexp.c index db39b5b8..d123cf75 100644 --- a/src/misc/wordexp.c +++ b/src/misc/wordexp.c @@ -14,13 +14,7 @@ static void reap(pid_t pid) { int status; - for (;;) { - if (waitpid(pid, &status, 0) < 0) { - if (errno != EINTR) return; - } else { - if (WIFEXITED(status)) return; - } - } + while (waitpid(pid, &status, 0) < 0 && errno == EINTR); } static char *getword(FILE *f) -- 2.11.0
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.