aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDamien Neil <dneil@google.com>2025-10-14 09:34:11 -0700
committerGopher Robot <gobot@golang.org>2025-10-14 10:43:46 -0700
commit0a239bcc9987b8a20a152feceb4884e810683a2c (patch)
treed46342382ab6dc2008037dbd61c23207d72a6146 /src
parent5a9ef44bc05b937cff2394b5880ecca616cb878e (diff)
downloadgo-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.go4
-rw-r--r--src/net/url/url_test.go23
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) {