Skip to content

Commit

Permalink
Sanitize invite argument before calling the invite info endpoint
Browse files Browse the repository at this point in the history
Fixes a potential path traversal bug that can lead you to superfluously
and erroneously call a separate endpoint.
  • Loading branch information
Rapptz committed Nov 24, 2024
1 parent 7db879b commit 5c4c281
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion discord/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -868,6 +868,12 @@ def resolve_invite(invite: Union[Invite, str]) -> ResolvedInvite:
invite: Union[:class:`~discord.Invite`, :class:`str`]
The invite.
Raises
-------
ValueError
The invite is not a valid Discord invite, e.g. is not a URL
or does not contain alphanumeric characters.
Returns
--------
:class:`.ResolvedInvite`
Expand All @@ -887,7 +893,12 @@ def resolve_invite(invite: Union[Invite, str]) -> ResolvedInvite:
event_id = url.query.get('event')

return ResolvedInvite(code, int(event_id) if event_id else None)
return ResolvedInvite(invite, None)

allowed_characters = r'[a-zA-Z0-9\-_]+'
if not re.fullmatch(allowed_characters, invite):
raise ValueError('Invite contains characters that are not allowed')

return ResolvedInvite(invite, None)


def resolve_template(code: Union[Template, str]) -> str:
Expand Down

0 comments on commit 5c4c281

Please sign in to comment.