Commit 536c2aa6 authored by Jacob Baskin's avatar Jacob Baskin

URL should have an empty Scheme if there is an invalid character (i.e.

not [a-zA-Z0-9+-.]) before there is a ":".

This is particularly helpful in the erroneous-but-relatively-common
case of relative URLs containing an unescaped colon in the query
string--see the added test for an example.

R=rsc
APPROVED=rsc
DELTA=15  (15 added, 0 deleted, 0 changed)
OCL=30354
CL=30356
parent d8e4446d
......@@ -180,6 +180,10 @@ func getscheme(rawurl string) (scheme, path string, err os.Error) {
return "", "", BadURL{"missing protocol scheme"}
}
return rawurl[0:i], rawurl[i+1:len(rawurl)], nil
default:
// we have encountered an invalid character,
// so there is no valid scheme
return "", rawurl, nil
}
}
return "", rawurl, nil
......
......@@ -134,6 +134,17 @@ var urltests = []URLTest {
},
""
},
// unescaped :// in query should not create a scheme
URLTest{
"/foo?query=http://bad",
&URL{
"/foo?query=http://bad",
"", "/foo?query=http://bad",
"", "", "",
"/foo", "query=http://bad", ""
},
""
},
}
var urlnofragtests = []URLTest {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment