Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 0c1d6f6

Browse files
authored
Enforce the max length for per-room display names / avatar URLs. (#10654)
To match the maximum lengths allowed for profile data.
1 parent 3e83f97 commit 0c1d6f6

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

changelog.d/10654.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Enforce the maximum length for per-room display names and avatar URLs.

synapse/handlers/room_member.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from synapse.event_auth import get_named_level, get_power_level_event
3737
from synapse.events import EventBase
3838
from synapse.events.snapshot import EventContext
39+
from synapse.handlers.profile import MAX_AVATAR_URL_LEN, MAX_DISPLAYNAME_LEN
3940
from synapse.types import (
4041
JsonDict,
4142
Requester,
@@ -79,7 +80,7 @@ def __init__(self, hs: "HomeServer"):
7980
self.account_data_handler = hs.get_account_data_handler()
8081
self.event_auth_handler = hs.get_event_auth_handler()
8182

82-
self.member_linearizer = Linearizer(name="member")
83+
self.member_linearizer: Linearizer = Linearizer(name="member")
8384

8485
self.clock = hs.get_clock()
8586
self.spam_checker = hs.get_spam_checker()
@@ -556,6 +557,20 @@ async def update_membership_locked(
556557
content.pop("displayname", None)
557558
content.pop("avatar_url", None)
558559

560+
if len(content.get("displayname") or "") > MAX_DISPLAYNAME_LEN:
561+
raise SynapseError(
562+
400,
563+
f"Displayname is too long (max {MAX_DISPLAYNAME_LEN})",
564+
errcode=Codes.BAD_JSON,
565+
)
566+
567+
if len(content.get("avatar_url") or "") > MAX_AVATAR_URL_LEN:
568+
raise SynapseError(
569+
400,
570+
f"Avatar URL is too long (max {MAX_AVATAR_URL_LEN})",
571+
errcode=Codes.BAD_JSON,
572+
)
573+
559574
effective_membership_state = action
560575
if action in ["kick", "unban"]:
561576
effective_membership_state = "leave"

0 commit comments

Comments
 (0)