diff options
author | DeepBlueV7.X <nicolas.werner@hotmail.de> | 2022-10-21 08:49:47 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-21 09:49:47 +0100 |
commit | fab495a9e1442d99e922367f65f41de5eaa488eb (patch) | |
tree | 35aa3682b2e2d45e3efc1a677c2315a7c7ec2295 | |
parent | Build wheels on macos 11, not 10.15 (#14249) (diff) | |
download | synapse-fab495a9e1442d99e922367f65f41de5eaa488eb.tar.xz |
Fix event size checks (#13710)
-rw-r--r-- | changelog.d/13710.bugfix | 1 | ||||
-rw-r--r-- | synapse/event_auth.py | 10 |
2 files changed, 6 insertions, 5 deletions
diff --git a/changelog.d/13710.bugfix b/changelog.d/13710.bugfix new file mode 100644 index 0000000000..4c318d15f5 --- /dev/null +++ b/changelog.d/13710.bugfix @@ -0,0 +1 @@ +Fix a long-standing bug where Synapse would count codepoints instead of bytes when validating the size of some fields. diff --git a/synapse/event_auth.py b/synapse/event_auth.py index bab31e33c5..5036604036 100644 --- a/synapse/event_auth.py +++ b/synapse/event_auth.py @@ -342,15 +342,15 @@ def check_state_dependent_auth_rules( def _check_size_limits(event: "EventBase") -> None: - if len(event.user_id) > 255: + if len(event.user_id.encode("utf-8")) > 255: raise EventSizeError("'user_id' too large") - if len(event.room_id) > 255: + if len(event.room_id.encode("utf-8")) > 255: raise EventSizeError("'room_id' too large") - if event.is_state() and len(event.state_key) > 255: + if event.is_state() and len(event.state_key.encode("utf-8")) > 255: raise EventSizeError("'state_key' too large") - if len(event.type) > 255: + if len(event.type.encode("utf-8")) > 255: raise EventSizeError("'type' too large") - if len(event.event_id) > 255: + if len(event.event_id.encode("utf-8")) > 255: raise EventSizeError("'event_id' too large") if len(encode_canonical_json(event.get_pdu_json())) > MAX_PDU_SIZE: raise EventSizeError("event too large") |