From 66e425fb0e9a54c1224b808fd797a06a74de0c63 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 3 Nov 2022 17:16:24 +0300 Subject: [PATCH] Use native os.CreateTemp instead of own one --- fileutils.go | 20 ++++++++++++++------ main.go | 5 ++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/fileutils.go b/fileutils.go index 34e6e74..aec22c6 100644 --- a/fileutils.go +++ b/fileutils.go @@ -22,17 +22,25 @@ import ( "net/http" "os" "path/filepath" - "strconv" "time" ) -var NoSync = os.Getenv("GOCHEESE_NO_SYNC") == "1" +var ( + NoSync = os.Getenv("GOCHEESE_NO_SYNC") == "1" + UmaskCur int +) func TempFile(dir string) (*os.File, error) { - // Assume that probability of suffix collision is negligible - suffix := strconv.FormatInt(time.Now().UnixNano()+int64(os.Getpid()), 16) - name := filepath.Join(dir, "nncp"+suffix) - return os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, os.FileMode(0666)) + tmp, err := os.CreateTemp(dir, "gocheese") + if err != nil { + return nil, err + } + err = os.Chmod(tmp.Name(), os.FileMode(0666&^UmaskCur)) + if err != nil { + tmp.Close() + return nil, err + } + return tmp, nil } func DirSync(dirPath string) error { diff --git a/main.go b/main.go index 08c7553..da276a6 100644 --- a/main.go +++ b/main.go @@ -44,7 +44,7 @@ import ( ) const ( - Version = "3.5.0" + Version = "3.6.0" UserAgent = "GoCheese/" + Version ) @@ -212,6 +212,9 @@ func main() { log.Fatalln("Both -tls-cert and -tls-key are required") } + UmaskCur = syscall.Umask(0) + syscall.Umask(UmaskCur) + var err error PyPIURLParsed, err = url.Parse(*PyPIURL) if err != nil { -- 2.44.0