Added checks for JSON body in accounts_data endpoint (#863)

Signed-off-by: Prateek Sachan <psachan@cs.iitr.ac.in>
This commit is contained in:
Prateek Sachan 2020-04-11 22:17:05 +05:30 committed by GitHub
parent dacee648f7
commit 317658acea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -15,6 +15,7 @@
package routing package routing
import ( import (
"encoding/json"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
@ -80,12 +81,26 @@ func SaveAccountData(
defer req.Body.Close() // nolint: errcheck defer req.Body.Close() // nolint: errcheck
if req.Body == http.NoBody {
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.NotJSON("Content not JSON"),
}
}
body, err := ioutil.ReadAll(req.Body) body, err := ioutil.ReadAll(req.Body)
if err != nil { if err != nil {
util.GetLogger(req.Context()).WithError(err).Error("ioutil.ReadAll failed") util.GetLogger(req.Context()).WithError(err).Error("ioutil.ReadAll failed")
return jsonerror.InternalServerError() return jsonerror.InternalServerError()
} }
if !json.Valid(body) {
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.BadJSON("Bad JSON content"),
}
}
if err := accountDB.SaveAccountData( if err := accountDB.SaveAccountData(
req.Context(), localpart, roomID, dataType, string(body), req.Context(), localpart, roomID, dataType, string(body),
); err != nil { ); err != nil {