mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Fix race condition during socket creation
Docker-DCO-1.1-Signed-off-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> (github: glebfm)
This commit is contained in:
parent
e5202de918
commit
24c73ce2d3
1 changed files with 12 additions and 3 deletions
|
@ -1205,11 +1205,20 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var oldmask int
|
||||||
|
if proto == "unix" {
|
||||||
|
oldmask = syscall.Umask(0777)
|
||||||
|
}
|
||||||
|
|
||||||
if job.GetenvBool("BufferRequests") {
|
if job.GetenvBool("BufferRequests") {
|
||||||
l, err = listenbuffer.NewListenBuffer(proto, addr, activationLock)
|
l, err = listenbuffer.NewListenBuffer(proto, addr, activationLock)
|
||||||
} else {
|
} else {
|
||||||
l, err = net.Listen(proto, addr)
|
l, err = net.Listen(proto, addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if proto == "unix" {
|
||||||
|
syscall.Umask(oldmask)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1247,9 +1256,6 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
|
||||||
log.Println("/!\\ DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\")
|
log.Println("/!\\ DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\")
|
||||||
}
|
}
|
||||||
case "unix":
|
case "unix":
|
||||||
if err := os.Chmod(addr, 0660); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
socketGroup := job.Getenv("SocketGroup")
|
socketGroup := job.Getenv("SocketGroup")
|
||||||
if socketGroup != "" {
|
if socketGroup != "" {
|
||||||
if err := changeGroup(addr, socketGroup); err != nil {
|
if err := changeGroup(addr, socketGroup); err != nil {
|
||||||
|
@ -1261,6 +1267,9 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err := os.Chmod(addr, 0660); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("Invalid protocol format.")
|
return fmt.Errorf("Invalid protocol format.")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue