From ab4812e10196fc9e30b32776be2c4036195500be Mon Sep 17 00:00:00 2001 From: oxalica Date: Tue, 10 Sep 2024 12:46:47 -0400 Subject: [PATCH] fix: deny room_admin on peer chat room --- blahd/src/id.rs | 6 ++++++ blahd/src/lib.rs | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/blahd/src/id.rs b/blahd/src/id.rs index c5ed5ca..f5c94b1 100644 --- a/blahd/src/id.rs +++ b/blahd/src/id.rs @@ -8,6 +8,8 @@ use blah_types::Id; pub trait IdExt { fn gen() -> Self; fn gen_peer_chat_rid() -> Self; + + fn is_peer_chat(&self) -> bool; } impl IdExt for Id { @@ -26,4 +28,8 @@ impl IdExt for Id { fn gen_peer_chat_rid() -> Self { Id(Self::gen().0 | i64::MIN) } + + fn is_peer_chat(&self) -> bool { + self.0 < 0 + } } diff --git a/blahd/src/lib.rs b/blahd/src/lib.rs index 0be1074..2d1fc28 100644 --- a/blahd/src/lib.rs +++ b/blahd/src/lib.rs @@ -902,6 +902,13 @@ async fn room_admin( "URI and payload room id mismatch", )); } + if rid.is_peer_chat() { + return Err(error_response!( + StatusCode::BAD_REQUEST, + "invalid_request", + "operation not permitted on peer chat rooms", + )); + } match op.signee.payload.op { RoomAdminOp::AddMember { user, permission } => {