Skip to content

Commit e1d4c75

Browse files
committed
Beware of non-empty state_keys on special events
1 parent e038f47 commit e1d4c75

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

synapse/api/constants.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,23 @@ class EventTypes:
132132
CallInvite: Final = "m.call.invite"
133133

134134

135+
ZERO_LENGTH_STATE_KEY_EVENT_TYPES = {
136+
EventTypes.CanonicalAlias,
137+
EventTypes.Create,
138+
EventTypes.JoinRules,
139+
EventTypes.PowerLevels,
140+
EventTypes.Name,
141+
EventTypes.Topic,
142+
EventTypes.RoomAvatar,
143+
EventTypes.Pinned,
144+
EventTypes.RoomEncryption,
145+
EventTypes.RoomHistoryVisibility,
146+
EventTypes.GuestAccess,
147+
EventTypes.ServerACL,
148+
EventTypes.Tombstone,
149+
}
150+
151+
135152
class ToDeviceEventTypes:
136153
RoomKeyRequest: Final = "m.room_key_request"
137154

synapse/event_auth.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646

4747
from synapse.api.constants import (
4848
MAX_PDU_SIZE,
49+
ZERO_LENGTH_STATE_KEY_EVENT_TYPES,
4950
EventContentFields,
5051
EventTypes,
5152
JoinRules,
@@ -794,6 +795,7 @@ def get_send_level(
794795
state_key == msc_3779_sender
795796
or state_key.startswith(msc_3779_sender + "_")
796797
)
798+
and etype not in ZERO_LENGTH_STATE_KEY_EVENT_TYPES
797799
)
798800
if state_key is not None and not is_owned_state_event:
799801
send_level = power_levels_content.get("state_default", 50)

0 commit comments

Comments
 (0)