oci: skip checking gid for WithAppendAdditionalGroups

Signed-off-by: Ye Sijun <junnplus@gmail.com>
This commit is contained in:
Ye Sijun 2022-08-05 18:09:08 +08:00
parent 01a2b793b8
commit 2dbff1dbca
No known key found for this signature in database
GPG Key ID: 0582626C83FA9CD0
2 changed files with 14 additions and 5 deletions

View File

@ -879,16 +879,20 @@ func WithAppendAdditionalGroups(groups ...string) SpecOpts {
groupMap := make(map[string]user.Group) groupMap := make(map[string]user.Group)
for _, group := range ugroups { for _, group := range ugroups {
groupMap[group.Name] = group groupMap[group.Name] = group
groupMap[strconv.Itoa(group.Gid)] = group
} }
var gids []uint32 var gids []uint32
for _, group := range groups { for _, group := range groups {
gid, err := strconv.ParseUint(group, 10, 32)
if err == nil {
gids = append(gids, uint32(gid))
} else {
g, ok := groupMap[group] g, ok := groupMap[group]
if !ok { if !ok {
return fmt.Errorf("unable to find group %s", group) return fmt.Errorf("unable to find group %s", group)
} }
gids = append(gids, uint32(g.Gid)) gids = append(gids, uint32(g.Gid))
} }
}
s.Process.User.AdditionalGids = append(s.Process.User.AdditionalGids, gids...) s.Process.User.AdditionalGids = append(s.Process.User.AdditionalGids, gids...)
return nil return nil
} }

View File

@ -476,6 +476,11 @@ daemon:x:2:root,bin,daemon
groups: []string{"bin", "daemon"}, groups: []string{"bin", "daemon"},
expected: []uint32{0, 1, 2}, expected: []uint32{0, 1, 2},
}, },
{
name: "append group id",
groups: []string{"999"},
expected: []uint32{999},
},
{ {
name: "unknown group", name: "unknown group",
groups: []string{"unknown"}, groups: []string{"unknown"},