]> Cypherpunks repositories - gostls13.git/commit
net/url: reject space in host; do not escape < > " in host
authorRuss Cox <rsc@golang.org>
Fri, 4 Dec 2015 17:43:25 +0000 (12:43 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 11 Dec 2015 05:17:38 +0000 (05:17 +0000)
commit617c93ce740c3c3cc28cdd1a0d712be183d0b328
tree228c305379066bd4d30dbc7365dd896641f4d52e
parenta4fd325c178ea29f554d69de4f2c3ffa09b53874
net/url: reject space in host; do not escape < > " in host

Host names in URLs must not use %-escaping for ASCII bytes, per RFC 3986.

url.Parse has historically allowed spaces and < > " in the URL host.
In Go 1.5, URL's String method started escaping those,
but then Parse would rejects the escaped form.
This CL is an attempt at some consistency between Parse and String
as far as the accepted host characters and the encoding of host characters,
so that if Parse succeeds, then Parse -> String -> Parse also succeeds.

Allowing space seems like a mistake, so reject that in Parse.
(Similarly, reject \t, \x01, and so on, all of which were being allowed.)

Allowing < > " doesn't seem awful, so continue to do that,
and go back to the Go 1.4 behavior of not escaping them in String.

Fixes #11302.

Change-Id: I0bf65b874cd936598f20694574364352a5abbe5f
Reviewed-on: https://go-review.googlesource.com/17387
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/net/http/request_test.go
src/net/url/url.go
src/net/url/url_test.go