]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxccontainer: handle execute containers correctly
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 6 Dec 2017 14:37:40 +0000 (15:37 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Wed, 6 Dec 2017 15:01:24 +0000 (16:01 +0100)
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 <christian.brauner@ubuntu.com>
src/lxc/lxccontainer.c

index d0f9b341fa125f442c31a82be6fbc3ef854d3da3..59e11b80aef36799d62a9a52d3281caa8c2c5df3 100644 (file)
@@ -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