diff --git a/clientapi/routing/account_data.go b/clientapi/routing/account_data.go index bbc8c258e..56cddba8b 100644 --- a/clientapi/routing/account_data.go +++ b/clientapi/routing/account_data.go @@ -15,6 +15,7 @@ package routing import ( + "encoding/json" "io/ioutil" "net/http" @@ -79,11 +80,26 @@ func SaveAccountData( 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) if err != nil { return httputil.LogThenError(req, err) } + var rawJson json.RawMessage + if err = json.Unmarshal(body, &rawJson); err != nil { + return util.JSONResponse{ + Code: http.StatusBadRequest, + JSON: jsonerror.BadJSON("Bad JSON content"), + } + } + if err := accountDB.SaveAccountData( req.Context(), localpart, roomID, dataType, string(body), ); err != nil {