summaryrefslogtreecommitdiff
path: root/pkg/env/env.go
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2022-08-23 10:51:21 -0400
committerDaniel J Walsh <dwalsh@redhat.com>2022-08-23 14:44:23 -0400
commit65efcdf709a83e6d013b4e65247750c97236d89a (patch)
tree2152d701bf23098b5e02af63f297820287d20368 /pkg/env/env.go
parent3bcd8047cff076d34887bd3be7ed0e5701a41a02 (diff)
downloadpodman-65efcdf709a83e6d013b4e65247750c97236d89a.tar.gz
podman-65efcdf709a83e6d013b4e65247750c97236d89a.tar.bz2
podman-65efcdf709a83e6d013b4e65247750c97236d89a.zip
Allow podman to run in an environment with keys containing spaces
Fixes: https://github.com/containers/podman/issues/15251 Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'pkg/env/env.go')
-rw-r--r--pkg/env/env.go20
1 files changed, 16 insertions, 4 deletions
diff --git a/pkg/env/env.go b/pkg/env/env.go
index 8af9fd77c..fb7949ad8 100644
--- a/pkg/env/env.go
+++ b/pkg/env/env.go
@@ -37,6 +37,22 @@ func Slice(m map[string]string) []string {
return env
}
+// Map transforms the specified slice of environment variables into a
+// map.
+func Map(slice []string) map[string]string {
+ envmap := make(map[string]string, len(slice))
+ for _, val := range slice {
+ data := strings.SplitN(val, "=", 2)
+
+ if len(data) > 1 {
+ envmap[data[0]] = data[1]
+ } else {
+ envmap[data[0]] = ""
+ }
+ }
+ return envmap
+}
+
// Join joins the two environment maps with override overriding base.
func Join(base map[string]string, override map[string]string) map[string]string {
if len(base) == 0 {
@@ -87,10 +103,6 @@ func parseEnv(env map[string]string, line string) error {
}
// trim the front of a variable, but nothing else
name := strings.TrimLeft(data[0], whiteSpaces)
- if strings.ContainsAny(name, whiteSpaces) {
- return fmt.Errorf("name %q has white spaces, poorly formatted name", name)
- }
-
if len(data) > 1 {
env[name] = data[1]
} else {