mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
Sanitize invite argument before calling the invite info endpoint
Fixes a potential path traversal bug that can lead you to superfluously and erroneously call a separate endpoint.
This commit is contained in:
parent
7db879b5bd
commit
5c4c281f05
@ -868,6 +868,12 @@ def resolve_invite(invite: Union[Invite, str]) -> ResolvedInvite:
|
|||||||
invite: Union[:class:`~discord.Invite`, :class:`str`]
|
invite: Union[:class:`~discord.Invite`, :class:`str`]
|
||||||
The invite.
|
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
|
Returns
|
||||||
--------
|
--------
|
||||||
:class:`.ResolvedInvite`
|
:class:`.ResolvedInvite`
|
||||||
@ -887,6 +893,11 @@ def resolve_invite(invite: Union[Invite, str]) -> ResolvedInvite:
|
|||||||
event_id = url.query.get('event')
|
event_id = url.query.get('event')
|
||||||
|
|
||||||
return ResolvedInvite(code, int(event_id) if event_id else None)
|
return ResolvedInvite(code, int(event_id) if event_id else 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)
|
return ResolvedInvite(invite, None)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user