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]
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
Improvements:

View File

@ -702,7 +702,7 @@ fn valid_membership_change(
false
} else {
// 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.
if sender != target_user {
warn!(
@ -711,11 +711,13 @@ fn valid_membership_change(
"Can't make another user join, sender did not match target"
);
false
} else if matches!(sender_membership, MembershipState::Ban | MembershipState::Join)
{
} else if matches!(
sender_membership,
MembershipState::Ban | MembershipState::Invite | MembershipState::Join
) {
warn!(
?target_user_membership_event_id,
"Membership state of ban or join are invalid",
"Membership state of ban, invite or join are invalid",
);
false
} else {