From: Marius Nuennerich Date: Tue, 14 Apr 2015 10:30:54 +0000 (+0100) Subject: io/ioutil: fix locking of the tempfile random state X-Git-Tag: go1.5beta1~1120 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=21e37daa49d233e2ba298cb154f409de1f3f748d;p=gostls13.git io/ioutil: fix locking of the tempfile random state Fixes #10451 Change-Id: I15ed777e9a4a4e1ba1178d07fcbe0ab4bf0d9e50 Reviewed-on: https://go-review.googlesource.com/8936 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/io/ioutil/tempfile.go b/src/io/ioutil/tempfile.go index 4a06e9756f..61d4a7ad37 100644 --- a/src/io/ioutil/tempfile.go +++ b/src/io/ioutil/tempfile.go @@ -55,7 +55,9 @@ func TempFile(dir, prefix string) (f *os.File, err error) { f, err = os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) if os.IsExist(err) { if nconflict++; nconflict > 10 { + randmu.Lock() rand = reseed() + randmu.Unlock() } continue } @@ -82,7 +84,9 @@ func TempDir(dir, prefix string) (name string, err error) { err = os.Mkdir(try, 0700) if os.IsExist(err) { if nconflict++; nconflict > 10 { + randmu.Lock() rand = reseed() + randmu.Unlock() } continue }