diff options
author | Bryan C. Mills <bcmills@google.com> | 2019-09-04 11:51:06 -0400 |
---|---|---|
committer | Bryan C. Mills <bcmills@google.com> | 2019-09-04 17:09:25 +0000 |
commit | 6719d889e1a333989c6f461a66090d5583eeaedf (patch) | |
tree | 424676d3e74f25351955edaf94eb03345585e459 /src | |
parent | d9a3d902ec139c95d8dc1b69977783fb8134b552 (diff) | |
download | go-git-6719d889e1a333989c6f461a66090d5583eeaedf.tar.gz |
cmd/go/internal/get: avoid panic in metaImportsForPrefix if web.Get fails
Fixes #34049
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/go/internal/get/vcs.go | 4 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/get_insecure_redirect.txt | 5 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_get_insecure_redirect.txt | 13 |
3 files changed, 17 insertions, 5 deletions
diff --git a/src/cmd/go/internal/get/vcs.go b/src/cmd/go/internal/get/vcs.go index 705bb66dbe..6ae3cffd93 100644 --- a/src/cmd/go/internal/get/vcs.go +++ b/src/cmd/go/internal/get/vcs.go @@ -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}) }) diff --git a/src/cmd/go/testdata/script/get_insecure_redirect.txt b/src/cmd/go/testdata/script/get_insecure_redirect.txt index a83b17672d..0478d1f75d 100644 --- a/src/cmd/go/testdata/script/get_insecure_redirect.txt +++ b/src/cmd/go/testdata/script/get_insecure_redirect.txt @@ -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 index 0000000000..a83b17672d --- /dev/null +++ b/src/cmd/go/testdata/script/mod_get_insecure_redirect.txt @@ -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 |