From e8b33018e36a036261335bcb3a569bee61029e9b Mon Sep 17 00:00:00 2001 From: Aaron Raimist Date: Fri, 24 May 2019 17:44:28 -0500 Subject: [PATCH 1/4] Fix error when downloading thumbnail with width/height param missing Signed-off-by: Aaron Raimist --- synapse/rest/media/v1/thumbnail_resource.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/synapse/rest/media/v1/thumbnail_resource.py b/synapse/rest/media/v1/thumbnail_resource.py index 5305e9175f25..e35d27a25227 100644 --- a/synapse/rest/media/v1/thumbnail_resource.py +++ b/synapse/rest/media/v1/thumbnail_resource.py @@ -20,6 +20,8 @@ from twisted.web.resource import Resource from twisted.web.server import NOT_DONE_YET +from synapse.api.errors import Codes, SynapseError + from synapse.http.server import set_cors_headers, wrap_json_request_handler from synapse.http.servlet import parse_integer, parse_string @@ -61,6 +63,10 @@ def _async_render_GET(self, request): method = parse_string(request, "method", "scale") m_type = parse_string(request, "type", "image/png") + if None in (width, height): + message = "Missing width and/or height param" + raise SynapseError(400, message, Codes.MISSING_PARAM) + if server_name == self.server_name: if self.dynamic_thumbnails: yield self._select_or_generate_local_thumbnail( From 4cb73688ced8e47a611d7cbff98bbb4049105ff5 Mon Sep 17 00:00:00 2001 From: Aaron Raimist Date: Fri, 24 May 2019 17:46:23 -0500 Subject: [PATCH 2/4] Add changelog Signed-off-by: Aaron Raimist --- changelog.d/5258.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/5258.bugfix diff --git a/changelog.d/5258.bugfix b/changelog.d/5258.bugfix new file mode 100644 index 000000000000..70266e8aaba4 --- /dev/null +++ b/changelog.d/5258.bugfix @@ -0,0 +1 @@ +Fix error when downloading thumbnail with missing width/height parameter From 544e3dadf0c405efbc0596f5e4276718a4c2cfcb Mon Sep 17 00:00:00 2001 From: Aaron Raimist Date: Sat, 25 May 2019 11:42:41 -0500 Subject: [PATCH 3/4] Fix Signed-off-by: Aaron Raimist --- changelog.d/5258.bugfix | 2 +- synapse/rest/media/v1/thumbnail_resource.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/changelog.d/5258.bugfix b/changelog.d/5258.bugfix index 70266e8aaba4..fb5d44aedbf2 100644 --- a/changelog.d/5258.bugfix +++ b/changelog.d/5258.bugfix @@ -1 +1 @@ -Fix error when downloading thumbnail with missing width/height parameter +Fix error when downloading thumbnail with missing width/height parameter. diff --git a/synapse/rest/media/v1/thumbnail_resource.py b/synapse/rest/media/v1/thumbnail_resource.py index e35d27a25227..db752c5d3ec8 100644 --- a/synapse/rest/media/v1/thumbnail_resource.py +++ b/synapse/rest/media/v1/thumbnail_resource.py @@ -21,7 +21,6 @@ from twisted.web.server import NOT_DONE_YET from synapse.api.errors import Codes, SynapseError - from synapse.http.server import set_cors_headers, wrap_json_request_handler from synapse.http.servlet import parse_integer, parse_string From fa840d36ced0726f4f7cd23d13b0e88a5ffdd8c3 Mon Sep 17 00:00:00 2001 From: Aaron Raimist Date: Sun, 26 May 2019 10:39:38 -0500 Subject: [PATCH 4/4] Use required=True Signed-off-by: Aaron Raimist --- synapse/rest/media/v1/thumbnail_resource.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/synapse/rest/media/v1/thumbnail_resource.py b/synapse/rest/media/v1/thumbnail_resource.py index db752c5d3ec8..35a750923b6f 100644 --- a/synapse/rest/media/v1/thumbnail_resource.py +++ b/synapse/rest/media/v1/thumbnail_resource.py @@ -20,7 +20,6 @@ from twisted.web.resource import Resource from twisted.web.server import NOT_DONE_YET -from synapse.api.errors import Codes, SynapseError from synapse.http.server import set_cors_headers, wrap_json_request_handler from synapse.http.servlet import parse_integer, parse_string @@ -57,15 +56,11 @@ def render_GET(self, request): def _async_render_GET(self, request): set_cors_headers(request) server_name, media_id, _ = parse_media_id(request) - width = parse_integer(request, "width") - height = parse_integer(request, "height") + width = parse_integer(request, "width", required=True) + height = parse_integer(request, "height", required=True) method = parse_string(request, "method", "scale") m_type = parse_string(request, "type", "image/png") - if None in (width, height): - message = "Missing width and/or height param" - raise SynapseError(400, message, Codes.MISSING_PARAM) - if server_name == self.server_name: if self.dynamic_thumbnails: yield self._select_or_generate_local_thumbnail(