From 4cc0c80eb46e1eb4d4afa456e584566335798971 Mon Sep 17 00:00:00 2001
From: Patrick Cloke <patrickc@matrix.org>
Date: Thu, 9 Feb 2023 10:10:12 -0500
Subject: [PATCH 1/2] Avoid mutating cached room aliases.

---
 synapse/handlers/directory.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/synapse/handlers/directory.py b/synapse/handlers/directory.py
index 2ea52257cb9e..d31b0fbb1745 100644
--- a/synapse/handlers/directory.py
+++ b/synapse/handlers/directory.py
@@ -485,7 +485,8 @@ async def edit_published_room_list(
                 )
             )
             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

From cb53d7fc30c93d257cc7a88957d55b7b1e7fa6d3 Mon Sep 17 00:00:00 2001
From: Patrick Cloke <patrickc@matrix.org>
Date: Thu, 9 Feb 2023 10:11:56 -0500
Subject: [PATCH 2/2] Newsfragment

---
 changelog.d/15038.bugfix | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 changelog.d/15038.bugfix

diff --git a/changelog.d/15038.bugfix b/changelog.d/15038.bugfix
new file mode 100644
index 000000000000..4695a097561c
--- /dev/null
+++ b/changelog.d/15038.bugfix
@@ -0,0 +1 @@
+Fix a long-standing bug where the room aliases returned could be corrupted.