]> Cypherpunks repositories - gostls13.git/commitdiff
io/ioutil: fix locking of the tempfile random state
authorMarius Nuennerich <mnu@google.com>
Tue, 14 Apr 2015 10:30:54 +0000 (11:30 +0100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 14 Apr 2015 19:45:05 +0000 (19:45 +0000)
Fixes #10451

Change-Id: I15ed777e9a4a4e1ba1178d07fcbe0ab4bf0d9e50
Reviewed-on: https://go-review.googlesource.com/8936
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/io/ioutil/tempfile.go

index 4a06e9756fb3f909e1ce84db6084a608694d2839..61d4a7ad37dcf51caca8105437a274d1034cd968 100644 (file)
@@ -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
                }