]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: fix infinite loop in modload.keepSums
authorJay Conrod <jayconrod@google.com>
Mon, 30 Nov 2020 20:46:33 +0000 (15:46 -0500)
committerJay Conrod <jayconrod@google.com>
Mon, 30 Nov 2020 22:05:31 +0000 (22:05 +0000)
Fixes #42891

Change-Id: I0cce4204a1c4959b896188a2ab3719c0507f95e6
Reviewed-on: https://go-review.googlesource.com/c/go/+/274172
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Trust: Jay Conrod <jayconrod@google.com>

src/cmd/go/internal/modload/init.go
src/cmd/go/testdata/script/mod_import_issue42891.txt [new file with mode: 0644]

index a9b77c82b353b97e50271cec0cbe20756950282b..1c31a5f90aee83e18c90547e7f16e3b9224c9ced 100644 (file)
@@ -1018,7 +1018,7 @@ func keepSums(addDirect bool) map[module.Version]bool {
                        }
                }
                for _, pkg := range loaded.pkgs {
-                       if pkg.testOf != nil || pkg.inStd {
+                       if pkg.testOf != nil || pkg.inStd || module.CheckImportPath(pkg.path) != nil {
                                continue
                        }
                        for prefix := pkg.path; prefix != "."; prefix = path.Dir(prefix) {
diff --git a/src/cmd/go/testdata/script/mod_import_issue42891.txt b/src/cmd/go/testdata/script/mod_import_issue42891.txt
new file mode 100644 (file)
index 0000000..a78cab2
--- /dev/null
@@ -0,0 +1,14 @@
+# If an import declaration is an absolute path, most commands should report
+# an error instead of going into an infinite loop.
+# Verifies golang.org/issue/42891.
+go list .
+stdout '^m$'
+
+-- go.mod --
+module m
+
+go 1.16
+-- m.go --
+package m
+
+import "/"