From bdfec451dc9c36c648c4bdc2a1fc6b7bf17b6288 Mon Sep 17 00:00:00 2001
From: Daniel J Walsh <dwalsh@redhat.com>
Date: Wed, 3 Jun 2020 14:57:23 -0400
Subject: Namespace fields were set with bogus values

Namespace fields were being set with their option names
unless overriden by the user.  This was causing issues
with podman-remote on userns.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
---
 cmd/podman/containers/create.go | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/cmd/podman/containers/create.go b/cmd/podman/containers/create.go
index c8007bc2f..ed09585ba 100644
--- a/cmd/podman/containers/create.go
+++ b/cmd/podman/containers/create.go
@@ -161,24 +161,25 @@ func createInit(c *cobra.Command) error {
 	if c.Flag("no-hosts").Changed && c.Flag("add-host").Changed {
 		return errors.Errorf("--no-hosts and --add-host cannot be set together")
 	}
-	if c.Flag("userns").Changed {
-		cliVals.UserNS = c.Flag("userns").Value.String()
-	}
-	if c.Flag("ipc").Changed {
-		cliVals.IPC = c.Flag("ipc").Value.String()
-	}
-	if c.Flag("uts").Changed {
-		cliVals.UTS = c.Flag("uts").Value.String()
-	}
-	if c.Flag("pid").Changed {
-		cliVals.PID = c.Flag("pid").Value.String()
+	cliVals.UserNS = c.Flag("userns").Value.String()
+	// if user did not modify --userns flag and did turn on
+	// uid/gid mappsings, set userns flag to "private"
+	if !c.Flag("userns").Changed && cliVals.UserNS == "host" {
+		if len(cliVals.UIDMap) > 0 ||
+			len(cliVals.GIDMap) > 0 ||
+			cliVals.SubUIDName != "" ||
+			cliVals.SubGIDName != "" {
+			cliVals.UserNS = "private"
+		}
 	}
+
+	cliVals.IPC = c.Flag("ipc").Value.String()
+	cliVals.UTS = c.Flag("uts").Value.String()
+	cliVals.PID = c.Flag("pid").Value.String()
+	cliVals.CGroupsNS = c.Flag("cgroupns").Value.String()
 	if !c.Flag("pids-limit").Changed {
 		cliVals.PIDsLimit = -1
 	}
-	if c.Flag("cgroupns").Changed {
-		cliVals.CGroupsNS = c.Flag("cgroupns").Value.String()
-	}
 	if c.Flag("entrypoint").Changed {
 		val := c.Flag("entrypoint").Value.String()
 		cliVals.Entrypoint = &val
-- 
cgit v1.2.3-54-g00ecf