run.go | 8 +++++++- tmp.go | 6 ------ usage.go | 2 +- diff --git a/run.go b/run.go index 28cfeb6fe8a036df9f46da2ff551978bc2e416547af86bc193991245b8a4572b..4e54635ffa1e56228afa7075ab9dd2556938dc3d89d624e940152fcf2f109a19 100644 --- a/run.go +++ b/run.go @@ -21,6 +21,8 @@ package main import ( "bufio" + "crypto/rand" + "encoding/hex" "errors" "flag" "fmt" @@ -402,7 +404,11 @@ cmd.Env = append(os.Environ(), fmt.Sprintf("%s=%d", EnvLevel, Level+1)) cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", EnvDirPrefix, dirPrefix)) cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", EnvBuildUUID, BuildUUID)) - childStderrPrefix := tempsuffix() + childStderrPrefixRaw := make([]byte, 8) + if _, err = io.ReadFull(rand.Reader, childStderrPrefixRaw); err != nil { + panic(err) + } + childStderrPrefix := hex.EncodeToString(childStderrPrefixRaw) cmd.Env = append(cmd.Env, fmt.Sprintf( "%s=%s", EnvStderrPrefix, childStderrPrefix, )) diff --git a/tmp.go b/tmp.go index 13ec38ed6e8f228626d208344d7a60e9892bcf06d4917bce4867f3d9a02b9ddf..1107023bf5d41f3775e9aa869e032d1546c738a4625c3b72daf968615c1fe1ae 100644 --- a/tmp.go +++ b/tmp.go @@ -21,13 +21,7 @@ package main import ( "os" - "strconv" - "time" ) - -func tempsuffix() string { - return strconv.FormatInt((time.Now().UnixNano()+int64(os.Getpid()))&0xFFFFFFFF, 16) -} func tempfile(dir, prefix string) (*os.File, error) { tmp, err := os.CreateTemp(dir, prefix) diff --git a/usage.go b/usage.go index 6b5089568d9bf5b28039459b22e79929e752d0dc44abbd15b54a131169da7b82..7ba89b46961f16087914c9875cf530a07b629ac4aa8eebe25025d4050e54c9b5 100644 --- a/usage.go +++ b/usage.go @@ -24,7 +24,7 @@ "os" ) const ( - Version = "1.25.0" + Version = "1.26.0" Warranty = `Copyright (C) 2020-2022 Sergey Matveev This program is free software: you can redistribute it and/or modify