From 52e14d45175f7c633900e21e127bc545786bfda0 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Tue, 25 Feb 2014 13:07:19 -0700 Subject: [PATCH] Convert api/server.go to also use the handy user package Docker-DCO-1.1-Signed-off-by: Andrew Page (github: tianon) Upstream-commit: 7bce5957a08ae31f4b83d1a13ad056e5b2af15e1 Component: engine --- components/engine/api/server.go | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/components/engine/api/server.go b/components/engine/api/server.go index 4b10a2dae1..0dd9d966e6 100644 --- a/components/engine/api/server.go +++ b/components/engine/api/server.go @@ -12,6 +12,7 @@ import ( "github.com/dotcloud/docker/engine" "github.com/dotcloud/docker/pkg/listenbuffer" "github.com/dotcloud/docker/pkg/systemd" + "github.com/dotcloud/docker/pkg/user" "github.com/dotcloud/docker/utils" "github.com/gorilla/mux" "io" @@ -21,7 +22,6 @@ import ( "net/http" "net/http/pprof" "os" - "regexp" "strconv" "strings" "syscall" @@ -1142,18 +1142,15 @@ func ListenAndServe(proto, addr string, eng *engine.Engine, logging, enableCors return err } - groups, err := ioutil.ReadFile("/etc/group") + groups, err := user.ParseGroupFilter(func(g *user.Group) bool { + return g.Name == "docker" + }) if err != nil { return err } - re := regexp.MustCompile("(^|\n)docker:.*?:([0-9]+)") - if gidMatch := re.FindStringSubmatch(string(groups)); gidMatch != nil { - gid, err := strconv.Atoi(gidMatch[2]) - if err != nil { - return err - } - utils.Debugf("docker group found. gid: %d", gid) - if err := os.Chown(addr, 0, gid); err != nil { + if len(groups) > 0 { + utils.Debugf("docker group found. gid: %d", groups[0].Gid) + if err := os.Chown(addr, 0, groups[0].Gid); err != nil { return err } }