diff mbox series

[OpenWrt-Devel,ucert,10/13] usign-exec: return code fixes

Message ID 19f9e1917e1b458ed3b80d0d0295d62ae3ee3185.1589663193.git.mschiffer@universe-factory.net
State Accepted
Delegated to: Matthias Schiffer
Headers show
Series ucert fixes and cleanup | expand

Commit Message

Matthias Schiffer May 16, 2020, 9:14 p.m. UTC
- WEXITSTATUS() should only be called when WIFEXITED() returns true
- Fix double WEXITSTATUS() in usign_f()

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
---
 usign-exec.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/usign-exec.c b/usign-exec.c
index 0dde81ed647b..241d63077365 100644
--- a/usign-exec.c
+++ b/usign-exec.c
@@ -79,7 +79,7 @@  int usign_s(const char *msgfile, const char *seckeyfile, const char *sigfile, bo
 	}
 
 	waitpid(pid, &status, 0);
-	return WEXITSTATUS(status);
+	return WIFEXITED(status) ? WEXITSTATUS(status) : -1;
 }
 #else
 int usign_s(const char *msgfile, const char *seckeyfile, const char *sigfile, bool quiet) {
@@ -139,8 +139,9 @@  static int usign_f(char fingerprint[17], const char *pubkeyfile, const char *sec
 	close(fds[1]);
 
 	waitpid(pid, &status, 0);
-	status = WEXITSTATUS(status);
-	if (fingerprint && !WEXITSTATUS(status)) {
+	status = WIFEXITED(status) ? WEXITSTATUS(status) : -1;
+
+	if (fingerprint && !status) {
 		ssize_t r;
 		memset(fingerprint, 0, 17);
 		r = read(fds[0], fingerprint, 17);
@@ -235,5 +236,5 @@  int usign_v(const char *msgfile, const char *pubkeyfile,
 	}
 
 	waitpid(pid, &status, 0);
-	return WEXITSTATUS(status);
+	return WIFEXITED(status) ? WEXITSTATUS(status) : -1;
 }