2
0
Эх сурвалжийг харах

Fixed #24441 -- Changed get_image_dimensions() return value for broken images

Raúl Cumplido 10 жил өмнө
parent
commit
cda74c7fc9

+ 1 - 1
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()

+ 1 - 0
tests/files/brokenimg.png

@@ -0,0 +1 @@
+123

+ 16 - 0
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()