cmd/go/internal/auth: fix .netrc lookup for URLs with specified port

The .netrc spec [1] defines credentials based on "machine name", so remove specified ports
from URL before looking for a match.

[1] https://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-file.html

Fixes #37130

Change-Id: Iab993afba26c927454d6166111ad1e1a53dbce43
Reviewed-on: https://go-review.googlesource.com/c/go/+/218418
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
David Howden 2020-02-08 08:59:45 +11:00 committed by Bryan C. Mills
parent 65bd07611c
commit 139a79dc37
1 changed files with 3 additions and 1 deletions

View File

@ -10,10 +10,12 @@ import "net/http"
// AddCredentials fills in the user's credentials for req, if any.
// The return value reports whether any matching credentials were found.
func AddCredentials(req *http.Request) (added bool) {
host := req.URL.Hostname()
// TODO(golang.org/issue/26232): Support arbitrary user-provided credentials.
netrcOnce.Do(readNetrc)
for _, l := range netrc {
if l.machine == req.URL.Host {
if l.machine == host {
req.SetBasicAuth(l.login, l.password)
return true
}