Skip to content

Commit

Permalink
Fix a potential UID/GID collision in unit tests
Browse files Browse the repository at this point in the history
The tests for generating username/passwd entries assume that
UID/GID 123/456 do not exist, which is not a safe assumption on
Debian. If a /etc/passwd entry with that UID/GID already exists,
the test will not add a new one with the same UID/GID, and will
fail. Change UID and GID to be 6 digits, because we're a lot less
likely to collide with UIDs and GIDs in use on the system that
way. Could also go further and randomly generate the UID/GID, but
that feels like overkill.

Fixes #17366

Signed-off-by: Matt Heon <[email protected]>
  • Loading branch information
mheon committed Feb 7, 2023
1 parent 77ab826 commit 1916da5
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions libpod/container_internal_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func TestGenerateUserPasswdEntry(t *testing.T) {
config: &ContainerConfig{
Spec: &spec.Spec{},
ContainerSecurityConfig: ContainerSecurityConfig{
User: "123:456",
User: "123456:456789",
},
},
state: &ContainerState{
Expand All @@ -26,22 +26,22 @@ func TestGenerateUserPasswdEntry(t *testing.T) {
if err != nil {
t.Fatal(err)
}
assert.Equal(t, user, "123:*:123:456:container user:/:/bin/sh\n")
assert.Equal(t, user, "123456:*:123456:456789:container user:/:/bin/sh\n")

c.config.User = "567"
c.config.User = "567890"
user, err = c.generateUserPasswdEntry(0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, user, "567:*:567:0:container user:/:/bin/sh\n")
assert.Equal(t, user, "567890:*:567890:0:container user:/:/bin/sh\n")
}

func TestGenerateUserGroupEntry(t *testing.T) {
c := Container{
config: &ContainerConfig{
Spec: &spec.Spec{},
ContainerSecurityConfig: ContainerSecurityConfig{
User: "123:456",
User: "123456:456789",
},
},
state: &ContainerState{
Expand All @@ -52,12 +52,12 @@ func TestGenerateUserGroupEntry(t *testing.T) {
if err != nil {
t.Fatal(err)
}
assert.Equal(t, group, "456:x:456:123\n")
assert.Equal(t, group, "456789:x:456789:123456\n")

c.config.User = "567"
c.config.User = "567890"
group, err = c.generateUserGroupEntry(0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, group, "567:x:567:567\n")
assert.Equal(t, group, "567890:x:567890:567890\n")
}

0 comments on commit 1916da5

Please sign in to comment.