From c69d40f94308d52243133def3b6be7ff403df6f1 Mon Sep 17 00:00:00 2001 From: winkidney Date: Wed, 22 Aug 2018 19:34:51 +0800 Subject: [PATCH] Fixed #29705 -- Fixed ImageField RuntimeError crash for WebP files. --- django/core/files/images.py | 4 ++++ tests/files/test.webp | Bin 0 -> 26390 bytes tests/files/tests.py | 6 ++++++ 3 files changed, 10 insertions(+) create mode 100644 tests/files/test.webp diff --git a/django/core/files/images.py b/django/core/files/images.py index cdb89de2cc..579c32e11c 100644 --- a/django/core/files/images.py +++ b/django/core/files/images.py @@ -69,6 +69,10 @@ def get_image_dimensions(file_or_path, close=False): # less bytes than expected. Skip and feed more data to the # parser (ticket #24544). pass + except RuntimeError: + # e.g. "RuntimeError: could not create decoder object" for + # WebP files. A different chunk_size may work. + pass if p.image: return p.image.size chunk_size *= 2 diff --git a/tests/files/test.webp b/tests/files/test.webp new file mode 100644 index 0000000000000000000000000000000000000000..ae871d14f711f81f9040a5d557bcb36453d2aa8a GIT binary patch literal 26390 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