diff options
author | Brendan Abolivier <babolivier@matrix.org> | 2022-03-31 11:49:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-31 11:49:49 +0200 |
commit | f96b85eca8cf14530f26b678dbb4900c54fb6a59 (patch) | |
tree | f1192d39b2cc01889a6a4ae2d0de5a6ffe9c70e2 /synapse/rest/media | |
parent | Remove the unused and unstable `/aggregations` endpoint. (#12293) (diff) | |
download | synapse-f96b85eca8cf14530f26b678dbb4900c54fb6a59.tar.xz |
Ensure the type of URL attributes is always str when matching against preview blacklist (#12333)
Diffstat (limited to 'synapse/rest/media')
-rw-r--r-- | synapse/rest/media/v1/preview_url_resource.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/synapse/rest/media/v1/preview_url_resource.py b/synapse/rest/media/v1/preview_url_resource.py index d47af8ead6..50383bdbd1 100644 --- a/synapse/rest/media/v1/preview_url_resource.py +++ b/synapse/rest/media/v1/preview_url_resource.py @@ -200,12 +200,17 @@ class PreviewUrlResource(DirectServeJsonResource): match = False continue + # Some attributes might not be parsed as strings by urlsplit (such as the + # port, which is parsed as an int). Because we use match functions that + # expect strings, we want to make sure that's what we give them. + value_str = str(value) + if pattern.startswith("^"): - if not re.match(pattern, getattr(url_tuple, attrib)): + if not re.match(pattern, value_str): match = False continue else: - if not fnmatch.fnmatch(getattr(url_tuple, attrib), pattern): + if not fnmatch.fnmatch(value_str, pattern): match = False continue if match: |