diff options
| author | Matthias Schiffer | 2020-05-16 16:27:51 +0000 |
|---|---|---|
| committer | Matthias Schiffer | 2020-05-16 16:27:51 +0000 |
| commit | 077feb5b5824beb3af28385d350e2398ffe46f27 (patch) | |
| tree | 0acd505e6b2d754948679c3b0d26a5f2e60719dd | |
| parent | 7ec4bb764e1eb58f5d499d3b47f97bfc9a09eb0a (diff) | |
| download | ucert-077feb5b5824beb3af28385d350e2398ffe46f27.tar.gz | |
usign-exec: close writing end of pipe early in parent process
When the child process exited without producing output (for example
because usign was not found), the parent process would hang forever in
read(). By closing the writing end early in the parent process, read
will return as soon as no writing FDs are left - that is, when the child
process has exited.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
| -rw-r--r-- | usign-exec.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/usign-exec.c b/usign-exec.c index c9aecf9..0dde81e 100644 --- a/usign-exec.c +++ b/usign-exec.c @@ -136,6 +136,8 @@ static int usign_f(char fingerprint[17], const char *pubkeyfile, const char *sec _exit(1); } + close(fds[1]); + waitpid(pid, &status, 0); status = WEXITSTATUS(status); if (fingerprint && !WEXITSTATUS(status)) { @@ -149,7 +151,6 @@ static int usign_f(char fingerprint[17], const char *pubkeyfile, const char *sec } close(fds[0]); - close(fds[1]); return status; } |