]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go/internal/auth: fix .netrc lookup for URLs with specified port
authorDavid Howden <dhowden@gmail.com>
Fri, 7 Feb 2020 21:59:45 +0000 (08:59 +1100)
committerBryan C. Mills <bcmills@google.com>
Thu, 12 Mar 2020 12:58:31 +0000 (12:58 +0000)
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>
src/cmd/go/internal/auth/auth.go

index 12e3c74dcc75498720f32f3c49243d2994668888..fe5a89d727157ea4fd5bc0f9732858d36358be70 100644 (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
                }