From: Daniel Lenski Date: Mon, 6 Aug 2018 07:48:01 +0000 (-0700) Subject: Use waitpid() in a portable fashion X-Git-Tag: v8.00~95^2~2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=f06b564fa2d5d9e6cee3367d1ec4b564ffe020af;p=users%2Fdwmw2%2Fopenconnect.git Use waitpid() in a portable fashion The status value set by waitpid() needs to be manipulated using WIFEXITED() and WEXITSTATUS() macros to be portable. --- 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);