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