2
0
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:
Dwight Engen
2013-04-15 13:43:14 -04:00
committed by Stéphane Graber
parent 2796cf790f
commit 8e7da691af

View File

@@ -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;