[lxc-devel] [PATCH] fix checking hook script exit code

Serge Hallyn serge.hallyn at ubuntu.com
Fri Apr 12 20:36:03 UTC 2013


Quoting Dwight Engen (dwight.engen at oracle.com):
> 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 (abnormal
> termination).
> 
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
> ---
>  src/lxc/conf.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 6b3f318..07529da 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) {
> @@ -317,8 +318,10 @@ static int run_buffer(char *buffer)
>  
>  	free(output);
>  
> -	if (pclose(f) == -1) {
> -		SYSERROR("Script exited on error");
> +	ret = pclose(f);
> +	if (ret < 0 || !WIFEXITED(ret) || WEXITSTATUS(ret) != 0) {
> +		SYSERROR("Script exited:%snormally with:%d",
> +			 WIFEXITED(ret) ? "" : "ab", WEXITSTATUS(ret));

I don't know pclose all that well...  but the manpage says
       The pclose() function returns -1 if wait4(2) returns an error, or
       some  other  error  is detected.

You're treating it as though it contains the status filled in
by wait4 et al.  Is that valid?

not nack'ing, just not clear on what we can do with ret :)

>  		return -1;
>  	}
>  
> -- 
> 1.7.12.3
> 
> 
> ------------------------------------------------------------------------------
> Precog is a next-generation analytics platform capable of advanced
> analytics on semi-structured data. The platform includes APIs for building
> apps and a phenomenal toolset for data science. Developers can use
> our toolset for easy data analysis & visualization. Get a free account!
> http://www2.precog.com/precogplatform/slashdotnewsletter
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel




More information about the lxc-devel mailing list