2 MiB decodeJSON reads and unmarshals the JSON body into v. Wraps the body in http.MaxBytesReader so an attacker can't exhaust memory by POSTing a multi-GB JSON blob — without this, json.NewDecoder.Decode happily streams the whole body into a single allocation.
(r *http.Request, v interface{})
| 2342 | // multi-GB JSON blob — without this, json.NewDecoder.Decode happily |
| 2343 | // streams the whole body into a single allocation. |
| 2344 | func decodeJSON(r *http.Request, v interface{}) error { |
| 2345 | return decodeJSONWithLimit(r, v, defaultJSONBodyLimit) |
| 2346 | } |
| 2347 | |
| 2348 | // decodeJSONWithLimit is the size-configurable variant. Use this for |
| 2349 | // endpoints that accept large payloads (e.g. bulk-import) where the |