]> 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>
Sun, 17 Dec 2017 15:03:14 +0000 (16:03 +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 608eb85feb5ee967ef32aa7a78e960fb3145aa88..97d34fa9c00e2ee8ac31122d49e9e8bdbfb8dd87 100644 (file)
@@ -799,10 +799,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;
@@ -814,15 +810,16 @@ 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);
 
        /* ... 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