diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2021-10-18 19:28:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-18 18:28:30 +0100 |
commit | a5d2ea3d08f780cdb746ea7101824513a9ec9610 (patch) | |
tree | 0ee52c77d7386117d1e5c83f201f38e624148fd8 /synapse/handlers/federation.py | |
parent | Document Synapse's behaviour when dealing with multiple modules (#11096) (diff) | |
download | synapse-a5d2ea3d08f780cdb746ea7101824513a9ec9610.tar.xz |
Check *all* auth events for room id and rejection (#11009)
This fixes a bug where we would accept an event whose `auth_events` include rejected events, if the rejected event was shadowed by another `auth_event` with same `(type, state_key)`. The approach is to pass a list of auth events into `check_auth_rules_for_event` instead of a dict, which of course means updating the call sites. This is an extension of #10956.
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index e072efad16..69f1ef3afa 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -1167,13 +1167,11 @@ class FederationHandler: logger.info("Failed to find auth event %r", e_id) for e in itertools.chain(auth_events, state, [event]): - auth_for_e = { - (event_map[e_id].type, event_map[e_id].state_key): event_map[e_id] - for e_id in e.auth_event_ids() - if e_id in event_map - } + auth_for_e = [ + event_map[e_id] for e_id in e.auth_event_ids() if e_id in event_map + ] if create_event: - auth_for_e[(EventTypes.Create, "")] = create_event + auth_for_e.append(create_event) try: validate_event_for_room_version(room_version, e) |