]> Cypherpunks.ru repositories - goredo.git/commitdiff
More reliable and clear random prefix
authorSergey Matveev <stargrave@stargrave.org>
Wed, 3 Aug 2022 14:30:34 +0000 (17:30 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 3 Aug 2022 14:30:56 +0000 (17:30 +0300)
run.go
tmp.go
usage.go

diff --git a/run.go b/run.go
index 44d25d55045943eafcc873831444915ae458b404..8cb6017d7d5ee3547a9bb0fd59d8a180135fa0c8 100644 (file)
--- 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 @@ func runScript(tgtOrig string, errs chan error, traced bool) error {
        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 45bf32d1583fe5d82adda7316a62874aa095155a..dbeed50c50363a5cd0811c85fd6f55344d65fd08 100644 (file)
--- a/tmp.go
+++ b/tmp.go
@@ -21,14 +21,8 @@ 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)
        if err != nil {
index f5340640aba1d56f4e4d719854965ed69051181e..4dd88614b1aae634a85a9eac40fcfaea243c66e7 100644 (file)
--- a/usage.go
+++ b/usage.go
@@ -24,7 +24,7 @@ import (
 )
 
 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