Skip to content

Commit e3089e3

Browse files
author
Derek Dowling
authored
Merge pull request #35 from bsdlp/max_content_length
Max content length
2 parents e9842c9 + 72d0c9e commit e3089e3

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

client/client.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ string BUT DOESN'T close the ReadCloser. Useful for debugging.
3333
*/
3434
func DumpBody(response *http.Response) (string, *jsh.Error) {
3535

36-
byteData, err := ioutil.ReadAll(response.Body)
36+
byteData, err := ioutil.ReadAll(io.LimitReader(response.Body, jsh.MaxContentLength))
3737
if err != nil {
3838
return "", jsh.ISE(fmt.Sprintf("Error attempting to read request body: %s", err.Error()))
3939
}

parser.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ func ParseList(r *http.Request) (List, *Error) {
7373
return document.Data, nil
7474
}
7575

76+
// MaxContentLength is 10MB
77+
// https://github.com/golang/go/blob/abb3c0618b658a41bf91a087f1737412e93ff6d9/src/pkg/net/http/request.go#L617
78+
const MaxContentLength int64 = 10 << 20
79+
7680
/*
7781
ParseDoc parses and returns a top level jsh.Document. In most cases, using
7882
"ParseList" or "ParseObject" is preferable.
@@ -113,7 +117,7 @@ func (p *Parser) Document(payload io.ReadCloser, mode DocumentMode) (*Document,
113117
Mode: mode,
114118
}
115119

116-
decodeErr := json.NewDecoder(payload).Decode(document)
120+
decodeErr := json.NewDecoder(io.LimitReader(payload, MaxContentLength)).Decode(document)
117121
if decodeErr != nil {
118122
return nil, ISE(fmt.Sprintf("Error parsing JSON Document: %s", decodeErr.Error()))
119123
}

0 commit comments

Comments
 (0)