]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
start: set environment variables correctly
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 13 Sep 2017 02:01:41 +0000 (04:01 +0200)
committerStéphane Graber <stgraber@ubuntu.com>
Sun, 24 Sep 2017 04:41:29 +0000 (00:41 -0400)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/start.c

index 50b348f25ed97f2ca76bf77b309715e4dc39699a..fd7ba46d1959f06f0792a2a5a85b9eace31335b5 100644 (file)
@@ -989,16 +989,10 @@ static int do_start(void *data)
                INFO("Unshared CLONE_NEWCGROUP.");
        }
 
-       /* The clearenv() and putenv() calls have been moved here to allow us to
-        * use environment variables passed to the various hooks, such as the
-        * start hook above. Not all of the variables like CONFIG_PATH or ROOTFS
-        * are valid in this context but others are.
+       /* Add the requested environment variables to the current environment to
+        * allow them to be used by the various hooks, such as the start hook
+        * above.
         */
-       if (clearenv()) {
-               SYSERROR("Failed to clear environment.");
-               /* Don't error out though. */
-       }
-
        lxc_list_for_each(iterator, &handler->conf->environment) {
                if (putenv((char *)iterator->elem)) {
                        SYSERROR("Failed to set environment variable: %s.", (char *)iterator->elem);
@@ -1070,6 +1064,21 @@ static int do_start(void *data)
        if (lxc_sync_barrier_parent(handler, LXC_SYNC_CGROUP_LIMITS))
                goto out_warn_father;
 
+       /* Reset the environment variables the user requested in a clear
+        * environment.
+        */
+       if (clearenv()) {
+               SYSERROR("Failed to clear environment.");
+               /* Don't error out though. */
+       }
+
+       lxc_list_for_each(iterator, &handler->conf->environment) {
+               if (putenv((char *)iterator->elem)) {
+                       SYSERROR("Failed to set environment variable: %s.", (char *)iterator->elem);
+                       goto out_warn_father;
+               }
+       }
+
        if (putenv("container=lxc")) {
                SYSERROR("Failed to set environment variable: container=lxc.");
                goto out_warn_father;