mirror of
https://github.com/containers/podman.git
synced 2025-06-27 21:50:18 +08:00
Use SplitN(2) when copying env variables
Environment variables whose value contained an equal sign where truncated Fixes #11891 Signed-off-by: Jhon Honce <jhonce@redhat.com>
This commit is contained in:
@ -257,7 +257,7 @@ func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGener
|
|||||||
// Environment Variables
|
// Environment Variables
|
||||||
envs := map[string]string{}
|
envs := map[string]string{}
|
||||||
for _, env := range imageData.Config.Env {
|
for _, env := range imageData.Config.Env {
|
||||||
keyval := strings.Split(env, "=")
|
keyval := strings.SplitN(env, "=", 2)
|
||||||
envs[keyval[0]] = keyval[1]
|
envs[keyval[0]] = keyval[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import (
|
|||||||
"github.com/containers/storage/pkg/stringid"
|
"github.com/containers/storage/pkg/stringid"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
|
"github.com/onsi/gomega/format"
|
||||||
. "github.com/onsi/gomega/gexec"
|
. "github.com/onsi/gomega/gexec"
|
||||||
"github.com/opencontainers/selinux/go-selinux"
|
"github.com/opencontainers/selinux/go-selinux"
|
||||||
)
|
)
|
||||||
@ -2852,4 +2853,45 @@ invalid kube kind
|
|||||||
Expect(ls).Should(Exit(0))
|
Expect(ls).Should(Exit(0))
|
||||||
Expect(len(ls.OutputToStringArray())).To(Equal(1))
|
Expect(len(ls.OutputToStringArray())).To(Equal(1))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Describe("verify environment variables", func() {
|
||||||
|
var maxLength int
|
||||||
|
BeforeEach(func() {
|
||||||
|
maxLength = format.MaxLength
|
||||||
|
format.MaxLength = 0
|
||||||
|
})
|
||||||
|
AfterEach(func() {
|
||||||
|
format.MaxLength = maxLength
|
||||||
|
})
|
||||||
|
|
||||||
|
It("values containing equal sign", func() {
|
||||||
|
javaToolOptions := `-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal`
|
||||||
|
openj9JavaOptions := `-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false`
|
||||||
|
|
||||||
|
containerfile := fmt.Sprintf(`FROM %s
|
||||||
|
ENV JAVA_TOOL_OPTIONS=%q
|
||||||
|
ENV OPENJ9_JAVA_OPTIONS=%q
|
||||||
|
`,
|
||||||
|
ALPINE, javaToolOptions, openj9JavaOptions)
|
||||||
|
|
||||||
|
image := "podman-kube-test:env"
|
||||||
|
podmanTest.BuildImage(containerfile, image, "false")
|
||||||
|
ctnr := getCtr(withImage(image))
|
||||||
|
pod := getPod(withCtr(ctnr))
|
||||||
|
Expect(generateKubeYaml("pod", pod, kubeYaml)).Should(Succeed())
|
||||||
|
|
||||||
|
play := podmanTest.Podman([]string{"play", "kube", "--start", kubeYaml})
|
||||||
|
play.WaitWithDefaultTimeout()
|
||||||
|
Expect(play).Should(Exit(0))
|
||||||
|
|
||||||
|
inspect := podmanTest.Podman([]string{"container", "inspect", "--format=json", getCtrNameInPod(pod)})
|
||||||
|
inspect.WaitWithDefaultTimeout()
|
||||||
|
Expect(inspect).Should(Exit(0))
|
||||||
|
|
||||||
|
contents := string(inspect.Out.Contents())
|
||||||
|
Expect(contents).To(ContainSubstring(javaToolOptions))
|
||||||
|
Expect(contents).To(ContainSubstring(openj9JavaOptions))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user