diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2020-03-03 07:12:45 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-03 07:12:45 -0500 |
commit | 7dcbc33a1be04c46b930699c03c15bc759f4b22c (patch) | |
tree | 7f2a789a51c7a74d2add850bcea270939304f2c0 /synapse/handlers/directory.py | |
parent | Always return a deferred from `get_current_state_deltas`. (#7019) (diff) | |
download | synapse-7dcbc33a1be04c46b930699c03c15bc759f4b22c.tar.xz |
Validate the alt_aliases property of canonical alias events (#6971)
Diffstat (limited to 'synapse/handlers/directory.py')
-rw-r--r-- | synapse/handlers/directory.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/synapse/handlers/directory.py b/synapse/handlers/directory.py index 0b23ca919a..61eb49059b 100644 --- a/synapse/handlers/directory.py +++ b/synapse/handlers/directory.py @@ -13,8 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. - -import collections import logging import string from typing import List @@ -307,15 +305,17 @@ class DirectoryHandler(BaseHandler): send_update = True content.pop("alias", "") - # Filter alt_aliases for the removed alias. - alt_aliases = content.pop("alt_aliases", None) - # If the aliases are not a list (or not found) do not attempt to modify - # the list. - if isinstance(alt_aliases, collections.Sequence): + # Filter the alt_aliases property for the removed alias. Note that the + # value is not modified if alt_aliases is of an unexpected form. + alt_aliases = content.get("alt_aliases") + if isinstance(alt_aliases, (list, tuple)) and alias_str in alt_aliases: send_update = True alt_aliases = [alias for alias in alt_aliases if alias != alias_str] + if alt_aliases: content["alt_aliases"] = alt_aliases + else: + del content["alt_aliases"] if send_update: yield self.event_creation_handler.create_and_send_nonmember_event( |