net/url: strict RFC 6874 validation for IPv6 zone identifiers#78570
net/url: strict RFC 6874 validation for IPv6 zone identifiers#78570VenkatKwest wants to merge 1 commit intogolang:masterfrom
Conversation
|
This PR (HEAD: 58b24b2) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/763880. Important tips:
|
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Gopher Robot: Patch Set 1: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be During May-July and Nov-Jan the Go project is in a code freeze, during which Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Nicholas Husin: Patch Set 1: Commit-Queue+1 (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Go LUCI: Patch Set 1: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2026-04-08T03:05:01Z","revision":"210f964a7d8bfbdc1092186c3d17eaf2e3687fb2"} Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Nicholas Husin: Patch Set 1: -Commit-Queue (Performed by <GERRIT_ACCOUNT_60063> on behalf of <GERRIT_ACCOUNT_4321354>) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Go LUCI: Patch Set 1: This CL has failed the run. Reason: Tryjob golang/try/gotip-linux-amd64-race has failed with summary (view all results):
To reproduce, try Additional links for debugging: Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Go LUCI: Patch Set 1: LUCI-TryBot-Result-1 Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
This PR (HEAD: 8c03a17) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/763880. Important tips:
|
|
Message from Venkat Esan: Patch Set 2: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Damien Neil: Patch Set 1: Hold+1 Copied votes on follow-up patch sets have been updated:
(1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
8c03a17 to
6c6150b
Compare
|
This PR (HEAD: 6c6150b) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/763880. Important tips:
|
|
Message from Venkat Esan: Patch Set 2: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Nicholas Husin: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
|
Message from Nicholas Husin: Patch Set 3: (3 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
This change updates the URL parser to strictly enforce the RFC 6874 ABNF grammar for IPv6 zone identifiers: ZoneID = 1*( unreserved / pct-encoded ) Previously, net/url allowed various sub-delims and gen-delims (such as ']', '!', '$', etc.) in the zone identifier. This allowed malformed hosts like [::1%25]evil.com] to absorb text past the closing bracket into the zone identifier. By restricting the unescaped characters in encodeZone to only the unreserved set (ALPHA / DIGIT / "-" / "." / "_" / "~"), any non-compliant characters will now correctly fail parsing unless they are properly percent-encoded. Fixes golang#78569
6c6150b to
2f28559
Compare
|
This PR (HEAD: 2f28559) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/763880. Important tips:
|
|
Message from Venkat Esan: Patch Set 3: (4 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/763880. |
net/url: strict RFC 6874 validation for IPv6 zone identifiers
This change updates the URL parser to strictly enforce the RFC 6874
ABNF grammar for IPv6 zone identifiers:
ZoneID = 1*( unreserved / pct-encoded )
Previously, net/url allowed various sub-delims and gen-delims (such
as ']', '!', '$', etc.) in the zone identifier. This allowed
malformed hosts like [::1%25]evil.com] to absorb text past the closing
bracket into the zone identifier.
By restricting the unescaped characters in encodeZone to only the
unreserved set (ALPHA / DIGIT / - / . / _ / ~), any
non-compliant characters will now correctly fail parsing unless they
are properly percent-encoded.
Fixes #78569