diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2020-09-23 15:58:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-23 15:58:20 +0100 |
commit | 4bb203ea4fba54c0de300be84cfd9b38793fad81 (patch) | |
tree | c7f4371815c1ab895e4d3c2a68a0f685d51d1478 | |
parent | Do not check lint/test dependencies at runtime. (#8377) (diff) | |
parent | Changelog (diff) | |
download | synapse-4bb203ea4fba54c0de300be84cfd9b38793fad81.tar.xz |
Fix missing null character check on guest_access room state (#8373)
When updating the `room_stats_state` table, we try to check for null bytes slipping in to the content for state events. It turns out we had added `guest_access` as a field to room_stats_state without including it in the null byte check. Lo and behold, a null byte in a `m.room.guest_access` event then breaks `room_stats_state` updates. This PR adds the check for `guest_access`.
-rw-r--r-- | changelog.d/8373.bugfix | 1 | ||||
-rw-r--r-- | synapse/storage/databases/main/stats.py | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/changelog.d/8373.bugfix b/changelog.d/8373.bugfix new file mode 100644 index 0000000000..e9d66a2088 --- /dev/null +++ b/changelog.d/8373.bugfix @@ -0,0 +1 @@ +Include `guest_access` in the fields that are checked for null bytes when updating `room_stats_state`. Broke in v1.7.2. \ No newline at end of file diff --git a/synapse/storage/databases/main/stats.py b/synapse/storage/databases/main/stats.py index d7816a8606..5beb302be3 100644 --- a/synapse/storage/databases/main/stats.py +++ b/synapse/storage/databases/main/stats.py @@ -210,6 +210,7 @@ class StatsStore(StateDeltasStore): * topic * avatar * canonical_alias + * guest_access A is_federatable key can also be included with a boolean value. @@ -234,6 +235,7 @@ class StatsStore(StateDeltasStore): "topic", "avatar", "canonical_alias", + "guest_access", ): field = fields.get(col, sentinel) if field is not sentinel and (not isinstance(field, str) or "\0" in field): |