Skip to content

Commit

Permalink
start: set environment variables correctly
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner committed Sep 13, 2017
1 parent 03afa51 commit 149857a
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions src/lxc/start.c
Expand Up @@ -913,16 +913,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);
Expand Down Expand Up @@ -1005,6 +999,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;
Expand Down

0 comments on commit 149857a

Please sign in to comment.