11 lines
705 B
Diff
11 lines
705 B
Diff
--- a/synapse/handlers/sync.py
|
|
+++ b/synapse/handlers/sync.py
|
|
@@ -1437,7 +1437,8 @@ class SyncHandler:
|
|
if event.membership == Membership.JOIN:
|
|
- user_ids_in_room = await self.store.get_users_in_room(room_id)
|
|
- if user_id in user_ids_in_room:
|
|
+ # CWE-407 fix: get_users_in_room returns Sequence[str] (List); convert to set
|
|
+ # for O(1) membership test instead of O(n) linear scan over all room members.
|
|
+ user_ids_in_room = frozenset(await self.store.get_users_in_room(room_id))
|
|
+ if user_id in user_ids_in_room:
|
|
mutable_joined_room_ids.add(room_id)
|