diff options
| author | Damien Neil <dneil@google.com> | 2025-10-14 09:34:11 -0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-10-14 10:43:46 -0700 |
| commit | 0a239bcc9987b8a20a152feceb4884e810683a2c (patch) | |
| tree | d46342382ab6dc2008037dbd61c23207d72a6146 /src | |
| parent | 5a9ef44bc05b937cff2394b5880ecca616cb878e (diff) | |
| download | go-0a239bcc9987b8a20a152feceb4884e810683a2c.tar.xz | |
Revert "net/url: disallow raw IPv6 addresses in host"
This reverts commit e3be2d1b2b68d960398a343805f77052d5decb22.
Reason for revert: Causes extensive failures in Google-internal testing.
Change-Id: I232f547fc326dff7df959d25f3a89777ea33b201
Reviewed-on: https://go-review.googlesource.com/c/go/+/711800
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Sean Liao <sean@liao.dev>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/net/url/url.go | 4 | ||||
| -rw-r--r-- | src/net/url/url_test.go | 23 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/net/url/url.go b/src/net/url/url.go index a697548801..6afa30f162 100644 --- a/src/net/url/url.go +++ b/src/net/url/url.go @@ -698,9 +698,7 @@ func parseHost(host string) (string, error) { return "", errors.New("invalid IP-literal") } return "[" + unescapedHostname + "]" + unescapedColonPort, nil - } else if i := strings.Index(host, ":"); i != -1 { - // IPv4address / reg-name - // E.g. 1.2.3.4, 1.2.3.4:80, example.com, example.com:80 + } else if i := strings.LastIndex(host, ":"); i != -1 { colonPort := host[i:] if !validOptionalPort(colonPort) { return "", fmt.Errorf("invalid port %q after host", colonPort) diff --git a/src/net/url/url_test.go b/src/net/url/url_test.go index a7543d6fd4..6084facacc 100644 --- a/src/net/url/url_test.go +++ b/src/net/url/url_test.go @@ -507,6 +507,26 @@ var urltests = []URLTest{ "", }, { + // Malformed IPv6 but still accepted. + "http://2b01:e34:ef40:7730:8e70:5aff:fefe:edac:8080/foo", + &URL{ + Scheme: "http", + Host: "2b01:e34:ef40:7730:8e70:5aff:fefe:edac:8080", + Path: "/foo", + }, + "", + }, + { + // Malformed IPv6 but still accepted. + "http://2b01:e34:ef40:7730:8e70:5aff:fefe:edac:/foo", + &URL{ + Scheme: "http", + Host: "2b01:e34:ef40:7730:8e70:5aff:fefe:edac:", + Path: "/foo", + }, + "", + }, + { "http://[2b01:e34:ef40:7730:8e70:5aff:fefe:edac]:8080/foo", &URL{ Scheme: "http", @@ -715,9 +735,6 @@ var parseRequestURLTests = []struct { {"https://[0:0::test.com]:80", false}, {"https://[2001:db8::test.com]", false}, {"https://[test.com]", false}, - {"https://1:2:3:4:5:6:7:8", false}, - {"https://1:2:3:4:5:6:7:8:80", false}, - {"https://example.com:80:", false}, } func TestParseRequestURI(t *testing.T) { |
