Skip to content

Commit

Permalink
net/url: improve url parsing error messages by quoting
Browse files Browse the repository at this point in the history
Current implementation doesn't always make it obvious what the exact
problem with the URL is, so this makes it clearer by consistently quoting
the invalid URL, as is the norm in other parsing implementations, eg.:
strconv.Atoi(" 123") returns an error: parsing " 123": invalid syntax

Updates golang#29261
  • Loading branch information
stefanb committed Dec 21, 2018
1 parent 429bae7 commit 82f4b68
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/net/http/readrequest_test.go
Expand Up @@ -133,7 +133,7 @@ var reqTests = []reqTest{
nil,
noBodyStr,
noTrailer,
"parse ../../../../etc/passwd: invalid URI for request",
"parse \"../../../../etc/passwd\": invalid URI for request",
},

// Tests missing URL:
Expand All @@ -143,7 +143,7 @@ var reqTests = []reqTest{
nil,
noBodyStr,
noTrailer,
"parse : empty url",
"parse \"\": empty url",
},

// Tests chunked body with trailer:
Expand Down
6 changes: 3 additions & 3 deletions src/net/url/url.go
Expand Up @@ -481,13 +481,13 @@ func Parse(rawurl string) (*URL, error) {
u, frag := split(rawurl, "#", true)
url, err := parse(u, false)
if err != nil {
return nil, &Error{"parse", u, err}
return nil, &Error{"parse", strconv.Quote(u), err}
}
if frag == "" {
return url, nil
}
if url.Fragment, err = unescape(frag, encodeFragment); err != nil {
return nil, &Error{"parse", rawurl, err}
return nil, &Error{"parse", strconv.Quote(rawurl), err}
}
return url, nil
}
Expand All @@ -500,7 +500,7 @@ func Parse(rawurl string) (*URL, error) {
func ParseRequestURI(rawurl string) (*URL, error) {
url, err := parse(rawurl, true)
if err != nil {
return nil, &Error{"parse", rawurl, err}
return nil, &Error{"parse", strconv.Quote(rawurl), err}
}
return url, nil
}
Expand Down

0 comments on commit 82f4b68

Please sign in to comment.