From 2bc026a4f3d0d792164a93089f074814cb100752 Mon Sep 17 00:00:00 2001 From: eternal-flame-AD Date: Fri, 22 Nov 2024 08:08:38 -0600 Subject: [PATCH] Set umask=0 when creating unix sockets Signed-off-by: eternal-flame-AD --- runner/runner.go | 12 ++++++++---- runner/umask.go | 11 +++++++++++ runner/umask_fallback.go | 7 +++++++ 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 runner/umask.go create mode 100644 runner/umask_fallback.go diff --git a/runner/runner.go b/runner/runner.go index 31e33cc7d..79107cd66 100644 --- a/runner/runner.go +++ b/runner/runner.go @@ -77,11 +77,15 @@ func startListening(connectionType, listenAddr string, port, keepAlive int) (net network, addr := getNetworkAndAddr(listenAddr, port) lc := net.ListenConfig{KeepAlive: time.Duration(keepAlive) * time.Second} - l, err := lc.Listen(context.Background(), network, addr) - if err == nil { - fmt.Println("Started listening for", connectionType, "on", l.Addr().Network(), l.Addr().String()) + var l net.Listener + if err := withUmask(0, func() (err error) { + l, err = lc.Listen(context.Background(), network, addr) + return err + }); err != nil { + return nil, err } - return l, err + fmt.Println("Started listening for", connectionType, "on", l.Addr().Network(), l.Addr().String()) + return l, nil } func getNetworkAndAddr(listenAddr string, port int) (string, string) { diff --git a/runner/umask.go b/runner/umask.go new file mode 100644 index 000000000..0742bc7ab --- /dev/null +++ b/runner/umask.go @@ -0,0 +1,11 @@ +//go:build unix + +package runner + +import "syscall" + +func withUmask(mask int, f func() error) error { + oldmask := syscall.Umask(mask) + defer syscall.Umask(oldmask) + return f() +} diff --git a/runner/umask_fallback.go b/runner/umask_fallback.go new file mode 100644 index 000000000..aa2b959f8 --- /dev/null +++ b/runner/umask_fallback.go @@ -0,0 +1,7 @@ +//go:build !unix + +package runner + +func withUmask(_ int, f func() error) error { + return f() +}