| ... | ... |
@@ -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 |
} |