mirror of
https://github.com/golang/go
synced 2024-11-12 04:30:22 -07: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:
parent
d8e4446d12
commit
536c2aa6ae
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user