From f06b564fa2d5d9e6cee3367d1ec4b564ffe020af Mon Sep 17 00:00:00 2001 From: Daniel Lenski Date: Mon, 6 Aug 2018 00:48:01 -0700 Subject: [PATCH] Use waitpid() in a portable fashion The status value set by waitpid() needs to be manipulated using WIFEXITED() and WEXITSTATUS() macros to be portable. --- gpst.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gpst.c b/gpst.c index d09df69f..a396aa69 100644 --- a/gpst.c +++ b/gpst.c @@ -885,9 +885,15 @@ static int run_hip_script(struct openconnect_info *vpninfo) buf_append_bytes(report_buf, b, i); waitpid(child, &status, 0); - if (status != 0) { + if (!WIFEXITED(status)) { vpn_progress(vpninfo, PRG_ERR, - _("HIP script returned non-zero status: %d\n"), status); + _("HIP script '%s' exited abnormally\n"), + vpninfo->csd_wrapper); + ret = -EINVAL; + } else if (WEXITSTATUS(status) != 0) { + vpn_progress(vpninfo, PRG_ERR, + _("HIP script '%s' returned non-zero status: %d\n"), + vpninfo->csd_wrapper, WEXITSTATUS(status)); ret = -EINVAL; } else { ret = check_or_submit_hip_report(vpninfo, report_buf->data);