Fix issue where environment variables with embedded equals signs were being dropped and not passed to the container. Fixes #26178. Signed-off-by: Matt Richardson <matt.richardson@octopus.com>
@@ -10,7 +10,7 @@ import (
func setupEnvironmentVariables(a []string) map[string]string {
r := make(map[string]string)
for _, s := range a {
- arr := strings.Split(s, "=")
+ arr := strings.SplitN(s, "=", 2)
if len(arr) == 2 {
r[arr[0]] = arr[1]
}
@@ -0,0 +1,13 @@
+package libcontainerd
+
+import (
+ "testing"
+)
+func TestEnvironmentParsing(t *testing.T) {
+ env := []string{"foo=bar", "car=hat", "a=b=c"}
+ result := setupEnvironmentVariables(env)
+ if len(result) != 3 || result["foo"] != "bar" || result["car"] != "hat" || result["a"] != "b=c" {
+ t.Fatalf("Expected map[foo:bar car:hat a:b=c], got %v", result)
+ }
+}