summary refs log tree commit diff
path: root/synapse/rest/media
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2022-03-31 11:49:49 +0200
committerGitHub <noreply@github.com>2022-03-31 11:49:49 +0200
commitf96b85eca8cf14530f26b678dbb4900c54fb6a59 (patch)
treef1192d39b2cc01889a6a4ae2d0de5a6ffe9c70e2 /synapse/rest/media
parentRemove the unused and unstable `/aggregations` endpoint. (#12293) (diff)
downloadsynapse-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.py9
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: