mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-06 10:24:57 -04:00
Fix /upload 500'ing when presented a very large image (#10029)
* Fix /upload 500'ing when presented a very large image Catch DecompressionBombError and re-raise as ThumbnailErrors * Set PIL's MAX_IMAGE_PIXELS to match homeserver.yaml to get it to bomb out quicker, to load less into memory in the case of super large images * Add changelog entry for 10029
This commit is contained in:
parent
21bd230831
commit
e8ac9ac8ca
3 changed files with 12 additions and 0 deletions
|
@ -40,6 +40,10 @@ class Thumbnailer:
|
|||
|
||||
FORMATS = {"image/jpeg": "JPEG", "image/png": "PNG"}
|
||||
|
||||
@staticmethod
|
||||
def set_limits(max_image_pixels: int):
|
||||
Image.MAX_IMAGE_PIXELS = max_image_pixels
|
||||
|
||||
def __init__(self, input_path: str):
|
||||
try:
|
||||
self.image = Image.open(input_path)
|
||||
|
@ -47,6 +51,11 @@ class Thumbnailer:
|
|||
# If an error occurs opening the image, a thumbnail won't be able to
|
||||
# be generated.
|
||||
raise ThumbnailError from e
|
||||
except Image.DecompressionBombError as e:
|
||||
# If an image decompression bomb error occurs opening the image,
|
||||
# then the image exceeds the pixel limit and a thumbnail won't
|
||||
# be able to be generated.
|
||||
raise ThumbnailError from e
|
||||
|
||||
self.width, self.height = self.image.size
|
||||
self.transpose_method = None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue