diff options
| author | Raúl Cumplido <raulcumplido@gmail.com> | 2015-03-22 13:46:38 +0000 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-03-25 12:39:29 -0400 |
| commit | cda74c7fc99abe1848e1f4965070108dd2ae378a (patch) | |
| tree | 0b520d52aaf8131396ba153b6165b33e43619be6 | |
| parent | cb506aed2a3ca439a7ed6cff410667f302405c8b (diff) | |
Fixed #24441 -- Changed get_image_dimensions() return value for broken images
| -rw-r--r-- | django/core/files/images.py | 2 | ||||
| -rw-r--r-- | tests/files/brokenimg.png | 1 | ||||
| -rw-r--r-- | tests/files/tests.py | 16 |
3 files changed, 18 insertions, 1 deletions
diff --git a/django/core/files/images.py b/django/core/files/images.py index 8883ae4416..f5254e37a6 100644 --- a/django/core/files/images.py +++ b/django/core/files/images.py @@ -66,7 +66,7 @@ def get_image_dimensions(file_or_path, close=False): if p.image: return p.image.size chunk_size *= 2 - return None + return (None, None) finally: if close: file.close() diff --git a/tests/files/brokenimg.png b/tests/files/brokenimg.png new file mode 100644 index 0000000000..190a18037c --- /dev/null +++ b/tests/files/brokenimg.png @@ -0,0 +1 @@ +123 diff --git a/tests/files/tests.py b/tests/files/tests.py index 2401f26c8f..d5d952d1e0 100644 --- a/tests/files/tests.py +++ b/tests/files/tests.py @@ -239,6 +239,22 @@ class InconsistentGetImageDimensionsBug(unittest.TestCase): self.assertEqual(size, Image.open(fh).size) +class GetImageDimensionsOnInvalidImages(unittest.TestCase): + @unittest.skipUnless(Image, "Pillow not installed") + def test_invalid_image(self): + """ + get_image_dimensions() should return (None, None) for the dimensions of + invalid images (#24441). + + brokenimg.png is not a valid image and it has been generated by: + $ echo "123" > brokenimg.png + """ + img_path = os.path.join(os.path.dirname(upath(__file__)), "brokenimg.png") + with open(img_path, 'rb') as fh: + size = images.get_image_dimensions(fh) + self.assertEqual(size, (None, None)) + + class FileMoveSafeTests(unittest.TestCase): def test_file_move_overwrite(self): handle_a, self.file_a = tempfile.mkstemp() |
