mirror of
git://github.com/lxc/lxc
synced 2025-08-30 16:12:01 +00:00
Merge pull request #1807 from brauner/2017-09-12/start_move_env_setup
start: move env setup before container setup
This commit is contained in:
commit
03afa514d0
@ -913,6 +913,23 @@ 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.
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/* Setup the container, ip, names, utsname, ... */
|
||||
ret = lxc_setup(handler);
|
||||
close(handler->data_sock[0]);
|
||||
@ -962,35 +979,6 @@ static int do_start(void *data)
|
||||
goto out_warn_father;
|
||||
}
|
||||
|
||||
/* 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.
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
if (handler->conf->pty_names) {
|
||||
if (putenv(handler->conf->pty_names)) {
|
||||
SYSERROR("Failed to set environment variable for container ptys.");
|
||||
goto out_warn_father;
|
||||
}
|
||||
}
|
||||
|
||||
close(handler->sigfd);
|
||||
|
||||
if (devnull_fd < 0) {
|
||||
@ -1017,6 +1005,18 @@ static int do_start(void *data)
|
||||
if (lxc_sync_barrier_parent(handler, LXC_SYNC_CGROUP_LIMITS))
|
||||
goto out_warn_father;
|
||||
|
||||
if (putenv("container=lxc")) {
|
||||
SYSERROR("Failed to set environment variable: container=lxc.");
|
||||
goto out_warn_father;
|
||||
}
|
||||
|
||||
if (handler->conf->pty_names) {
|
||||
if (putenv(handler->conf->pty_names)) {
|
||||
SYSERROR("Failed to set environment variable for container ptys.");
|
||||
goto out_warn_father;
|
||||
}
|
||||
}
|
||||
|
||||
/* The container has been setup. We can now switch to an unprivileged
|
||||
* uid/gid.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user