]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go/internal/modload: use lockedfile to read path-replacement go.mod files
authorRichard Miller <miller.research@gmail.com>
Wed, 29 Apr 2020 10:20:28 +0000 (11:20 +0100)
committerBryan C. Mills <bcmills@google.com>
Wed, 29 Apr 2020 18:56:19 +0000 (18:56 +0000)
When parsing go.mod files found via file-path replacements, it's safer to
use lockedfile.Read instead of ioutil.ReadFile, in case of overwriting by
other concurrent go commands.

Change-Id: I7dcac3bb5ada84bee1eb634b39f813c461ef103a
Reviewed-on: https://go-review.googlesource.com/c/go/+/230838
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Jay Conrod <jayconrod@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>

src/cmd/go/internal/modload/mvs.go

index 065a533e1f97b2a520785905c47faa2fdebfd5b8..a4bdf3ee0089551f81c5e9032da88dc1a19db8eb 100644 (file)
@@ -7,7 +7,6 @@ package modload
 import (
        "errors"
        "fmt"
-       "io/ioutil"
        "os"
        "path/filepath"
        "sort"
@@ -15,6 +14,7 @@ import (
 
        "cmd/go/internal/base"
        "cmd/go/internal/cfg"
+       "cmd/go/internal/lockedfile"
        "cmd/go/internal/modfetch"
        "cmd/go/internal/mvs"
        "cmd/go/internal/par"
@@ -108,7 +108,7 @@ func (r *mvsReqs) required(mod module.Version) ([]module.Version, error) {
                                dir = filepath.Join(ModRoot(), dir)
                        }
                        gomod := filepath.Join(dir, "go.mod")
-                       data, err := ioutil.ReadFile(gomod)
+                       data, err := lockedfile.Read(gomod)
                        if err != nil {
                                return nil, fmt.Errorf("parsing %s: %v", base.ShortPath(gomod), err)
                        }