From 077feb5b5824beb3af28385d350e2398ffe46f27 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 16 May 2020 18:27:51 +0200 Subject: [PATCH] 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 --- usign-exec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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; } -- 2.25.1