mirror of
https://github.com/golang/go
synced 2024-11-20 03:04:40 -07:00
http: only recognize application/x-www-form-urlencoded in ParseForm
R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/5322070
This commit is contained in:
parent
54049767ae
commit
a494c20032
@ -734,7 +734,7 @@ func (r *Request) ParseForm() (err error) {
|
||||
ct := r.Header.Get("Content-Type")
|
||||
ct, _, err := mime.ParseMediaType(ct)
|
||||
switch {
|
||||
case ct == "text/plain" || ct == "application/x-www-form-urlencoded" || ct == "":
|
||||
case ct == "application/x-www-form-urlencoded":
|
||||
var reader io.Reader = r.Body
|
||||
maxFormSize := int64(1<<63 - 1)
|
||||
if _, ok := r.Body.(*maxBytesReader); !ok {
|
||||
|
@ -29,12 +29,10 @@ func TestQuery(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestPostQuery(t *testing.T) {
|
||||
req := &Request{Method: "POST"}
|
||||
req.URL, _ = url.Parse("http://www.google.com/search?q=foo&q=bar&both=x")
|
||||
req.Header = Header{
|
||||
"Content-Type": {"application/x-www-form-urlencoded; boo!"},
|
||||
}
|
||||
req.Body = ioutil.NopCloser(strings.NewReader("z=post&both=y"))
|
||||
req, _ := NewRequest("POST", "http://www.google.com/search?q=foo&q=bar&both=x",
|
||||
strings.NewReader("z=post&both=y"))
|
||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded; param=value")
|
||||
|
||||
if q := req.FormValue("q"); q != "foo" {
|
||||
t.Errorf(`req.FormValue("q") = %q, want "foo"`, q)
|
||||
}
|
||||
@ -49,7 +47,6 @@ func TestPostQuery(t *testing.T) {
|
||||
type stringMap map[string][]string
|
||||
type parseContentTypeTest struct {
|
||||
contentType stringMap
|
||||
err bool
|
||||
}
|
||||
|
||||
var parseContentTypeTests = []parseContentTypeTest{
|
||||
@ -58,11 +55,10 @@ var parseContentTypeTests = []parseContentTypeTest{
|
||||
{contentType: stringMap{"Content-Type": {"text/plain; boundary="}}},
|
||||
{
|
||||
contentType: stringMap{"Content-Type": {"application/unknown"}},
|
||||
err: true,
|
||||
},
|
||||
}
|
||||
|
||||
func TestPostContentTypeParsing(t *testing.T) {
|
||||
func TestParseFormBadContentType(t *testing.T) {
|
||||
for i, test := range parseContentTypeTests {
|
||||
req := &Request{
|
||||
Method: "POST",
|
||||
@ -70,10 +66,7 @@ func TestPostContentTypeParsing(t *testing.T) {
|
||||
Body: ioutil.NopCloser(bytes.NewBufferString("body")),
|
||||
}
|
||||
err := req.ParseForm()
|
||||
if !test.err && err != nil {
|
||||
t.Errorf("test %d: Unexpected error: %v", i, err)
|
||||
}
|
||||
if test.err && err == nil {
|
||||
if err == nil {
|
||||
t.Errorf("test %d should have returned error", i)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user