summary refs log tree commit diff
path: root/synapse/rest/media/v1/base_resource.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-08-27 10:48:58 +0100
committerErik Johnston <erik@matrix.org>2015-08-27 10:48:58 +0100
commit66ec6cf9b892cd22dd75d9b66f10b120ebe233ed (patch)
tree4063865a37d5bf2febe89b8de6a9402fa0a2e104 /synapse/rest/media/v1/base_resource.py
parentNone check the correct variable (diff)
downloadsynapse-66ec6cf9b892cd22dd75d9b66f10b120ebe233ed.tar.xz
Check for an internationalised filename first
Diffstat (limited to 'synapse/rest/media/v1/base_resource.py')
-rw-r--r--synapse/rest/media/v1/base_resource.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/synapse/rest/media/v1/base_resource.py b/synapse/rest/media/v1/base_resource.py
index 610cb3ef82..03ebbbefe9 100644
--- a/synapse/rest/media/v1/base_resource.py
+++ b/synapse/rest/media/v1/base_resource.py
@@ -145,14 +145,20 @@ class BaseMediaResource(Resource):
             content_disposition = headers.get("Content-Disposition", None)
             if content_disposition:
                 _, params = cgi.parse_header(content_disposition[0],)
-                upload_name = params.get("filename", None)
-                if upload_name and not is_ascii(upload_name):
-                    upload_name = None
-                else:
-                    upload_name_utf8 = params.get("filename*", None)
-                    if upload_name_utf8:
-                        if upload_name_utf8.lower().startswith("utf-8''"):
-                            upload_name = upload_name_utf8[7:]
+                upload_name = None
+
+                # First check if there is a valid UTF-8 filename
+                upload_name_utf8 = params.get("filename*", None)
+                if upload_name_utf8:
+                    if upload_name_utf8.lower().startswith("utf-8''"):
+                        upload_name = upload_name_utf8[7:]
+
+                # If there isn't check for an ascii name.
+                if not upload_name:
+                    upload_name = params.get("filename", None)
+                    if upload_name and not is_ascii(upload_name):
+                        upload_name = None
+
                 if upload_name:
                     upload_name = urlparse.unquote(upload_name)
                     try: