Skip to content
Snippets Groups Projects
Unverified Commit 3ee97a27 authored by Brendan Abolivier's avatar Brendan Abolivier Committed by GitHub
Browse files

Make sure a retention policy is a state event (#8527)

* Make sure a retention policy is a state event

* Changelog
parent ec606ea9
No related branches found
No related tags found
No related merge requests found
Fix a bug introduced in v1.7.0 that could cause Synapse to insert values from non-state `m.room.retention` events into the `room_retention` database table.
...@@ -83,6 +83,9 @@ class EventValidator: ...@@ -83,6 +83,9 @@ class EventValidator:
Args: Args:
event (FrozenEvent): The event to validate. event (FrozenEvent): The event to validate.
""" """
if not event.is_state():
raise SynapseError(code=400, msg="must be a state event")
min_lifetime = event.content.get("min_lifetime") min_lifetime = event.content.get("min_lifetime")
max_lifetime = event.content.get("max_lifetime") max_lifetime = event.content.get("max_lifetime")
......
...@@ -1270,6 +1270,10 @@ class PersistEventsStore: ...@@ -1270,6 +1270,10 @@ class PersistEventsStore:
) )
def _store_retention_policy_for_room_txn(self, txn, event): def _store_retention_policy_for_room_txn(self, txn, event):
if not event.is_state():
logger.debug("Ignoring non-state m.room.retention event")
return
if hasattr(event, "content") and ( if hasattr(event, "content") and (
"min_lifetime" in event.content or "max_lifetime" in event.content "min_lifetime" in event.content or "max_lifetime" in event.content
): ):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment