From 4f198fb4efc93c617f5f460c29da168ea95b6b21 Mon Sep 17 00:00:00 2001 From: timedout Date: Sat, 13 Dec 2025 22:17:47 +0000 Subject: [PATCH] fix: Enforce limits when joining rooms --- src/api/client/membership/join.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/api/client/membership/join.rs b/src/api/client/membership/join.rs index fd431cc8..953211a1 100644 --- a/src/api/client/membership/join.rs +++ b/src/api/client/membership/join.rs @@ -44,6 +44,7 @@ use service::{ rooms::{ state::RoomMutexGuard, state_compressor::{CompressedState, HashSetCompressStateEvent}, + timeline::pdu_fits, }, }; @@ -573,6 +574,13 @@ async fn join_room_by_id_helper_remote( return state; }, }; + if !pdu_fits(&mut value.clone()) { + warn!( + "dropping incoming PDU {event_id} in room {room_id} from room join because \ + it exceeds 65535 bytes or is otherwise too large." + ); + return state; + } services.rooms.outlier.add_pdu_outlier(&event_id, &value); if let Some(state_key) = &pdu.state_key { let shortstatekey = services