state-res: Disallow invite->knock membership transition

Due to a spec clarification that reverts the previous spec clarification
This commit is contained in:
Kévin Commaille 2024-02-27 21:12:11 +01:00 committed by Kévin Commaille
parent 631911a1de
commit 812625fab4
2 changed files with 12 additions and 4 deletions

View File

@ -1,5 +1,11 @@
# [unreleased] # [unreleased]
Bug fixes:
* Disallow `invite` -> `knock` membership transition
* The spec was determined to be right about rejecting it in the first place:
<https://github.com/matrix-org/matrix-spec/pull/1717>
# 0.10.0 # 0.10.0
Improvements: Improvements:

View File

@ -702,7 +702,7 @@ fn valid_membership_change(
false false
} else { } else {
// 2. If `sender` does not match `state_key`, reject. // 2. If `sender` does not match `state_key`, reject.
// 3. If the `sender`'s current membership is not `ban` or `join`, allow. // 3. If the `sender`'s current membership is not `ban`, `invite`, or `join`, allow.
// 4. Otherwise, reject. // 4. Otherwise, reject.
if sender != target_user { if sender != target_user {
warn!( warn!(
@ -711,11 +711,13 @@ fn valid_membership_change(
"Can't make another user join, sender did not match target" "Can't make another user join, sender did not match target"
); );
false false
} else if matches!(sender_membership, MembershipState::Ban | MembershipState::Join) } else if matches!(
{ sender_membership,
MembershipState::Ban | MembershipState::Invite | MembershipState::Join
) {
warn!( warn!(
?target_user_membership_event_id, ?target_user_membership_event_id,
"Membership state of ban or join are invalid", "Membership state of ban, invite or join are invalid",
); );
false false
} else { } else {