1
0
Fork 0
mirror of https://forgejo.ellis.link/continuwuation/continuwuity.git synced 2025-07-28 10:48:30 +00:00

fix: Additional sanity checks when creating a PDU

Prevents creating events that are most likely catastrophically invalid
This commit is contained in:
nexy7574 2025-06-27 20:58:52 +01:00
parent c82ea24069
commit 543ab27747
No known key found for this signature in database
GPG key ID: 0FA334385D0B689F

View file

@ -719,6 +719,18 @@ impl Service {
); );
} }
} }
if event_type != TimelineEventType::RoomCreate && prev_events.is_empty() {
return Err!(Request(Unknown("Event incorrectly had zero prev_events.")));
}
if state_key.is_none() && depth.le(&uint!(2)) {
// The first two events in a room are always m.room.create and m.room.member,
// so any other events with that same depth are illegal.
warn!(
"Had unsafe depth {depth} when creating non-state event in {room_id}. Cowardly \
aborting"
);
return Err!(Request(Unknown("Unsafe depth for non-state event.")));
}
let mut pdu = PduEvent { let mut pdu = PduEvent {
event_id: ruma::event_id!("$thiswillbefilledinlater").into(), event_id: ruma::event_id!("$thiswillbefilledinlater").into(),