1
0
mirror of https://github.com/golang/go synced 2024-09-24 21:10:12 -06:00

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
This commit is contained in:
Jacob Baskin 2009-06-16 13:23:42 -07:00
parent d8e4446d12
commit 536c2aa6ae
2 changed files with 15 additions and 0 deletions

View File

@ -180,6 +180,10 @@ func getscheme(rawurl string) (scheme, path string, err os.Error) {
return "", "", BadURL{"missing protocol scheme"} return "", "", BadURL{"missing protocol scheme"}
} }
return rawurl[0:i], rawurl[i+1:len(rawurl)], nil 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 return "", rawurl, nil

View File

@ -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 { var urlnofragtests = []URLTest {