Browse code

Clean up 'container' environment variable injected by lxc-start

Solomon Hykes authored on 2013/03/24 11:11:00
Showing 1 changed files
... ...
@@ -8,6 +8,7 @@ import (
8 8
 	"os/exec"
9 9
 	"os/user"
10 10
 	"strconv"
11
+	"strings"
11 12
 	"syscall"
12 13
 )
13 14
 
... ...
@@ -52,6 +53,22 @@ func changeUser(u string) {
52 52
 	}
53 53
 }
54 54
 
55
+// Clear environment pollution introduced by lxc-start
56
+func cleanupEnv() {
57
+	env := os.Environ()
58
+	os.Clearenv()
59
+	for _, kv := range env {
60
+		parts := strings.SplitN(kv, "=", 2)
61
+		if len(parts) == 1 {
62
+			parts = append(parts, "")
63
+		}
64
+		if parts[0] == "container" {
65
+			continue
66
+		}
67
+		os.Setenv(parts[0], parts[1])
68
+	}
69
+}
70
+
55 71
 func executeProgram(name string, args []string) {
56 72
 	path, err := exec.LookPath(name)
57 73
 	if err != nil {
... ...
@@ -78,6 +95,7 @@ func SysInit() {
78 78
 	flag.Parse()
79 79
 
80 80
 	setupNetworking(*gw)
81
+	cleanupEnv()
81 82
 	changeUser(*u)
82 83
 	executeProgram(flag.Arg(0), flag.Args())
83 84
 }