]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.13] cmd/go/internal/get: avoid panic in metaImportsForPrefix...
authorBryan C. Mills <bcmills@google.com>
Wed, 4 Sep 2019 15:51:06 +0000 (11:51 -0400)
committerBryan C. Mills <bcmills@google.com>
Wed, 11 Sep 2019 13:26:55 +0000 (13:26 +0000)
Updates #29591
Updates #34049
Fixes #34081

Change-Id: I817b83ee2d0ca6d01ec64998f14bc4f32e365d66
Reviewed-on: https://go-review.googlesource.com/c/go/+/193259
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
(cherry picked from commit 1eab1aa6ba6c3f4d6f084751bca9a065707c3085)
Reviewed-on: https://go-review.googlesource.com/c/go/+/193264
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/internal/get/vcs.go
src/cmd/go/testdata/script/get_insecure_redirect.txt
src/cmd/go/testdata/script/mod_get_insecure_redirect.txt [new file with mode: 0644]

index 705bb66dbe2142ce95d9608cc3281478a66f557e..6ae3cffd93cc4fbddbca5cbd8e440cbcd1ae0cdf 100644 (file)
@@ -904,7 +904,7 @@ func metaImportsForPrefix(importPrefix string, mod ModuleMode, security web.Secu
                }
                resp, err := web.Get(security, url)
                if err != nil {
-                       return setCache(fetchResult{url: url, err: fmt.Errorf("fetch %s: %v", resp.URL, err)})
+                       return setCache(fetchResult{url: url, err: fmt.Errorf("fetching %s: %v", importPrefix, err)})
                }
                body := resp.Body
                defer body.Close()
@@ -913,7 +913,7 @@ func metaImportsForPrefix(importPrefix string, mod ModuleMode, security web.Secu
                        return setCache(fetchResult{url: url, err: fmt.Errorf("parsing %s: %v", resp.URL, err)})
                }
                if len(imports) == 0 {
-                       err = fmt.Errorf("fetch %s: no go-import meta tag", url)
+                       err = fmt.Errorf("fetching %s: no go-import meta tag found in %s", importPrefix, resp.URL)
                }
                return setCache(fetchResult{url: url, imports: imports, err: err})
        })
index a83b17672d4c1ded8935e5ad1acfa7c6062c9785..0478d1f75dea2f99b0281dd7b2ec3e76688d732d 100644 (file)
@@ -1,11 +1,10 @@
 # golang.org/issue/29591: 'go get' was following plain-HTTP redirects even without -insecure.
+# golang.org/issue/34049: 'go get' would panic in case of an insecure redirect in GOPATH mode
 
 [!net] skip
 [!exec:git] skip
 
-env GO111MODULE=on
-env GOPROXY=direct
-env GOSUMDB=off
+env GO111MODULE=off
 
 ! go get -d vcs-test.golang.org/insecure/go/insecure
 stderr 'redirected .* to insecure URL'
diff --git a/src/cmd/go/testdata/script/mod_get_insecure_redirect.txt b/src/cmd/go/testdata/script/mod_get_insecure_redirect.txt
new file mode 100644 (file)
index 0000000..a83b176
--- /dev/null
@@ -0,0 +1,13 @@
+# golang.org/issue/29591: 'go get' was following plain-HTTP redirects even without -insecure.
+
+[!net] skip
+[!exec:git] skip
+
+env GO111MODULE=on
+env GOPROXY=direct
+env GOSUMDB=off
+
+! go get -d vcs-test.golang.org/insecure/go/insecure
+stderr 'redirected .* to insecure URL'
+
+go get -d -insecure vcs-test.golang.org/insecure/go/insecure