mirror of
git://github.com/lxc/lxc
synced 2025-08-30 18:19:35 +00:00
fix checking hook script exit code
pclose returns the exit status from wait, we need to check that to see if the script itself failed or not. Tested a script that returned 0, 1, and also one that did a sleep and then was killed by a signal. Signed-off-by: Dwight Engen <dwight.engen@oracle.com> Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
committed by
Stéphane Graber
parent
2796cf790f
commit
8e7da691af
@@ -299,6 +299,7 @@ static int run_buffer(char *buffer)
|
||||
{
|
||||
FILE *f;
|
||||
char *output;
|
||||
int ret;
|
||||
|
||||
f = popen(buffer, "r");
|
||||
if (!f) {
|
||||
@@ -318,9 +319,17 @@ static int run_buffer(char *buffer)
|
||||
|
||||
free(output);
|
||||
|
||||
if (pclose(f) == -1) {
|
||||
ret = pclose(f);
|
||||
if (ret == -1) {
|
||||
SYSERROR("Script exited on error");
|
||||
return -1;
|
||||
} else if (WIFEXITED(ret) && WEXITSTATUS(ret) != 0) {
|
||||
ERROR("Script exited with status %d", WEXITSTATUS(ret));
|
||||
return -1;
|
||||
} else if (WIFSIGNALED(ret)) {
|
||||
ERROR("Script terminated by signal %d (%s)", WTERMSIG(ret),
|
||||
strsignal(WTERMSIG(ret)));
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user