[lxc-devel] [PATCH] lxc-attach: Clear environment and set container=lxc

David Ward david.ward at ll.mit.edu
Wed Mar 20 16:08:29 UTC 2013


The child process's environment should be manipulated the same way
by lxc-attach as it would be by lxc-start or lxc-execute.

Signed-off-by: David Ward <david.ward at ll.mit.edu>
---
 src/lxc/attach.c     |   15 +++++++++++++++
 src/lxc/attach.h     |    1 +
 src/lxc/lxc_attach.c |    5 +++++
 3 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/src/lxc/attach.c b/src/lxc/attach.c
index 2f32025..12adadb 100644
--- a/src/lxc/attach.c
+++ b/src/lxc/attach.c
@@ -277,6 +277,21 @@ int lxc_attach_drop_privs(struct lxc_proc_context_info *ctx)
 	return 0;
 }
 
+int lxc_attach_set_environment()
+{
+	if (clearenv()) {
+		SYSERROR("failed to clear environment");
+		/* don't error out though */
+	}
+
+	if (putenv("container=lxc")) {
+		SYSERROR("failed to set environment variable");
+		return -1;
+	}
+
+	return 0;
+}
+
 char *lxc_attach_getpwshell(uid_t uid)
 {
 	/* local variables */
diff --git a/src/lxc/attach.h b/src/lxc/attach.h
index 6bbfb42..404ff4c 100644
--- a/src/lxc/attach.h
+++ b/src/lxc/attach.h
@@ -37,6 +37,7 @@ extern struct lxc_proc_context_info *lxc_proc_get_context_info(pid_t pid);
 extern int lxc_attach_to_ns(pid_t other_pid, int which);
 extern int lxc_attach_remount_sys_proc();
 extern int lxc_attach_drop_privs(struct lxc_proc_context_info *ctx);
+extern int lxc_attach_set_environment();
 
 extern char *lxc_attach_getpwshell(uid_t uid);
 
diff --git a/src/lxc/lxc_attach.c b/src/lxc/lxc_attach.c
index 678b76d..7fd76ee 100644
--- a/src/lxc/lxc_attach.c
+++ b/src/lxc/lxc_attach.c
@@ -411,6 +411,11 @@ int main(int argc, char *argv[])
 			return -1;
 		}
 
+		if (lxc_attach_set_environment()) {
+			ERROR("could not set environment");
+			return -1;
+		}
+
 		/* tell parent we are done setting up the container and wait
 		 * until we have been put in the container's cgroup, if
 		 * applicable */
-- 
1.7.1





More information about the lxc-devel mailing list