summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Cloke <clokep@users.noreply.github.com>2023-02-09 10:56:02 -0500
committerGitHub <noreply@github.com>2023-02-09 15:56:02 +0000
commit8a6e0434889ea94893119775b6f56904cbc575c2 (patch)
tree20df6f76f427b1c3310177b83b86f915b0dc038c
parentAdd final type hint to synapse.server. (#15035) (diff)
downloadsynapse-8a6e0434889ea94893119775b6f56904cbc575c2.tar.xz
Avoid mutating cached room aliases. (#15038)
This might cause incorrect data in other callers which
are not expecting the canonical alias to be added into
the response.
-rw-r--r--changelog.d/15038.bugfix1
-rw-r--r--synapse/handlers/directory.py3
2 files changed, 3 insertions, 1 deletions
diff --git a/changelog.d/15038.bugfix b/changelog.d/15038.bugfix
new file mode 100644
index 0000000000..4695a09756
--- /dev/null
+++ b/changelog.d/15038.bugfix
@@ -0,0 +1 @@
+Fix a long-standing bug where the room aliases returned could be corrupted.
diff --git a/synapse/handlers/directory.py b/synapse/handlers/directory.py
index 2ea52257cb..d31b0fbb17 100644
--- a/synapse/handlers/directory.py
+++ b/synapse/handlers/directory.py
@@ -485,7 +485,8 @@ class DirectoryHandler:
                 )
             )
             if canonical_alias:
-                room_aliases.append(canonical_alias)
+                # Ensure we do not mutate room_aliases.
+                room_aliases = room_aliases + [canonical_alias]
 
             if not self.config.roomdirectory.is_publishing_room_allowed(
                 user_id, room_id, room_aliases