[lxc-devel] [PATCH v2] fix checking hook script exit code
Dwight Engen
dwight.engen at oracle.com
Mon Apr 15 17:43:14 UTC 2013
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 at oracle.com>
---
src/lxc/conf.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index c416da5..43cbbd8 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -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;
--
1.7.12.3
More information about the lxc-devel
mailing list