From bd08e45d7b25f06da2fc6dc824146b471db5f1f4 Mon Sep 17 00:00:00 2001 From: Stefano Babic Date: Tue, 16 Jun 2020 10:29:55 +0200 Subject: [PATCH] Shellscript stops before completing Commit 8fb94d7 reworks the way shell script are called, redirecting stdout and stderr to SWUpdate. A shell script runs then in a child process. Under some circumstances, SWUpdate closes the forked process before the child process completes. Be sure that the child process has terminated before to go on. Signed-off-by: Stefano Babic Reported-by: Piotr Piwko Tested-by: Piotr Piwko Signed-off-by: Joris Offouga --- core/pctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/pctl.c b/core/pctl.c index 8b1c667..01ad540 100644 --- a/core/pctl.c +++ b/core/pctl.c @@ -263,6 +263,7 @@ int run_system_cmd(const char *cmd) } } else { int fds[2]; + pid_t w; close(stdoutpipe[PIPE_WRITE]); close(stderrpipe[PIPE_WRITE]); @@ -276,7 +277,6 @@ int run_system_cmd(const char *cmd) * and from stderr (of the child process) as ERROR */ do { - pid_t w; int n1 = 0; struct timeval tv; fd_set readfds; @@ -373,7 +373,7 @@ int run_system_cmd(const char *cmd) } } } while (ret > 0 && n1 > 0); - } while (!WIFEXITED(wstatus)); + } while (w != process_id); close(stdoutpipe[PIPE_READ]); close(stderrpipe[PIPE_READ]); -- 2.25.1