From f9d7d3aa89f80da29736b35ab81d55dd5ea2d384 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 22 May 2019 19:14:10 -0600 Subject: Remove m.relates_to from events if the client set it to null It appears as though Python only checks to see if the key exists in a dictionary, not necessarily for a useful value. This means that when clients submit (valid) requests with `m.relates_to: null` and Synapse later reads it, it gets a None reference error on access. This is the easier route than guarding all the places where it could be None. --- synapse/rest/client/v1/room.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/synapse/rest/client/v1/room.py b/synapse/rest/client/v1/room.py index 255a85c588..d9ea6fa764 100644 --- a/synapse/rest/client/v1/room.py +++ b/synapse/rest/client/v1/room.py @@ -201,6 +201,11 @@ class RoomSendEventRestServlet(ClientV1RestServlet): requester = yield self.auth.get_user_by_req(request, allow_guest=True) content = parse_json_object_from_request(request) + # Pull out the relationship early if the client sent us something + # which cannot possibly be processed by us. + if content.get("m.relates_to", "not None") is None: + del content["m.relates_to"] + event_dict = { "type": event_type, "content": content, -- cgit 1.5.1