summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorTravis Ralston <travpc@gmail.com>2019-05-22 19:14:10 -0600
committerTravis Ralston <travpc@gmail.com>2019-05-22 19:14:10 -0600
commitf9d7d3aa89f80da29736b35ab81d55dd5ea2d384 (patch)
treef48e41151defdf92c949d72eea0e17fd78603401 /synapse
parentRun black on synapse.crypto.keyring (#5232) (diff)
downloadsynapse-f9d7d3aa89f80da29736b35ab81d55dd5ea2d384.tar.xz
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. 
Diffstat (limited to '')
-rw-r--r--synapse/rest/client/v1/room.py5
1 files changed, 5 insertions, 0 deletions
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,