diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2020-10-05 09:28:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-05 09:28:05 -0400 |
commit | c5251c6fbd2722d54d33e02021f286053e611efc (patch) | |
tree | 60e73cdbf07541d0acfed0a7ab4595514963e32b /synapse/visibility.py | |
parent | Add logging on startup/shutdown (#8448) (diff) | |
download | synapse-c5251c6fbd2722d54d33e02021f286053e611efc.tar.xz |
Do not assume that account data is of the correct form. (#8454)
This fixes a bug where `m.ignored_user_list` was assumed to be a dict, leading to odd behavior for users who set it to something else.
Diffstat (limited to 'synapse/visibility.py')
-rw-r--r-- | synapse/visibility.py | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/synapse/visibility.py b/synapse/visibility.py index e3da7744d2..527365498e 100644 --- a/synapse/visibility.py +++ b/synapse/visibility.py @@ -16,7 +16,7 @@ import logging import operator -from synapse.api.constants import EventTypes, Membership +from synapse.api.constants import AccountDataTypes, EventTypes, Membership from synapse.events.utils import prune_event from synapse.storage import Storage from synapse.storage.state import StateFilter @@ -77,15 +77,14 @@ async def filter_events_for_client( ) ignore_dict_content = await storage.main.get_global_account_data_by_type_for_user( - "m.ignored_user_list", user_id + AccountDataTypes.IGNORED_USER_LIST, user_id ) - # FIXME: This will explode if people upload something incorrect. - ignore_list = frozenset( - ignore_dict_content.get("ignored_users", {}).keys() - if ignore_dict_content - else [] - ) + ignore_list = frozenset() + if ignore_dict_content: + ignored_users_dict = ignore_dict_content.get("ignored_users", {}) + if isinstance(ignored_users_dict, dict): + ignore_list = frozenset(ignored_users_dict.keys()) erased_senders = await storage.main.are_users_erased((e.sender for e in events)) |