dhclient: Return non-zero status when script exits due to a signal

r343896 made it such that a non-zero exit status was passed through, but was
still wrong if the script exits on a signal. POSIX does not say what the
WEXITSTATUS macro returns in this case and in practice 0 is a common value.

Instead, translate the wait status into 8 bits the same way as the shell
calculates $?.

Reviewed by:	kib, Nash Kaminski
MFC after:	1 week
This commit is contained in:
Jilles Tjoelker 2019-02-08 23:03:28 +00:00
parent 60c81cf107
commit 3b08e0fcf3
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=343922

View File

@ -2348,7 +2348,8 @@ priv_script_go(void)
if (ip)
script_flush_env(ip->client);
return WEXITSTATUS(wstatus);
return (WIFEXITED(wstatus) ?
WEXITSTATUS(wstatus) : 128 + WTERMSIG(wstatus));
}
void