From: Christian Brauner Date: Wed, 6 Dec 2017 14:37:40 +0000 (+0100) Subject: lxccontainer: handle execute containers correctly X-Git-Tag: lxc-3.0.0.beta1~130^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa30091bb5bef1c1267357d876e5de51f3d990f5;p=thirdparty%2Flxc.git lxccontainer: handle execute containers correctly It doesn't make sense to error out when an app container doesn't pass explicit arguments through c->start{l}(). This is especially true since we implemented lxc.execute.cmd. However, even before we could have always relied on lxc.init.cmd and errored out after that. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index d0f9b341f..59e11b80a 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -828,10 +828,6 @@ static bool do_lxcapi_start(struct lxc_container *c, int useinit, char * const a return false; } - /* Is this app meant to be run through lxcinit, as in lxc-execute? */ - if (useinit && !argv) - return false; - if (container_mem_lock(c)) return false; conf = c->lxc_conf; @@ -843,15 +839,20 @@ static bool do_lxcapi_start(struct lxc_container *c, int useinit, char * const a if (!handler) return false; - /* If no argv was passed in, use lxc.init_cmd if provided in the - * configuration - */ - if (!argv) - argv = init_cmd = split_init_cmd(conf->init_cmd); + if (!argv) { + if (useinit && conf->execute_cmd) + argv = init_cmd = split_init_cmd(conf->execute_cmd); + else + argv = init_cmd = split_init_cmd(conf->init_cmd); + } /* ... otherwise use default_args. */ - if (!argv) - argv = default_args; + if (!argv) { + if (useinit) + return false; + else + argv = default_args; + } /* I'm not sure what locks we want here.Any? Is liblxc's locking enough * here to protect the on disk container? We don't want to exclude