Skip to content

Commit

Permalink
Minor fix splitting env vars in podman-commit
Browse files Browse the repository at this point in the history
`string.Split()` splits into slice of size greater than 2
which may result in loss of environment variables

fixes containers#3132

Signed-off-by: Divyansh Kamboj <kambojdivyansh2000@gmail.com>
  • Loading branch information
weirdwiz committed May 19, 2019
1 parent 00ecbfc commit ee3381f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
2 changes: 1 addition & 1 deletion libpod/container_commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func (c *Container) Commit(ctx context.Context, destImage string, options Contai
// Should we store the ENV we actually want in the spec separately?
if c.config.Spec.Process != nil {
for _, e := range c.config.Spec.Process.Env {
splitEnv := strings.Split(e, "=")
splitEnv := strings.SplitN(e, "=", 2)
importBuilder.SetEnv(splitEnv[0], splitEnv[1])
}
}
Expand Down
20 changes: 20 additions & 0 deletions test/e2e/commit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,4 +194,24 @@ var _ = Describe("Podman commit", func() {
Expect(r.ExitCode()).To(Equal(0))
})

It("podman commit container check env variables", func() {
s := podmanTest.Podman([]string{"run", "--name", "test1", "-e", "TEST=1=1-01=9.01", "-it", "alpine", "true"})
s.WaitWithDefaultTimeout()
Expect(s.ExitCode()).To(Equal(0))

c := podmanTest.Podman([]string{"commit", "test1", "newimage"})
c.WaitWithDefaultTimeout()
Expect(c.ExitCode()).To(Equal(0))

inspect := podmanTest.Podman([]string{"inspect", "newimage"})
inspect.WaitWithDefaultTimeout()
Expect(inspect.ExitCode()).To(Equal(0))
image := inspect.InspectImageJSON()

envMap := make(map[string]bool)
for _, v := range image[0].Config.Env {
envMap[v] = true
}
Expect(envMap["TEST=1=1-01=9.01"]).To(BeTrue())
})
})

0 comments on commit ee3381f

Please sign in to comment.