Skip to content

Commit 8e3c4e3

Browse files
authored
Merge pull request #3965 from radarhere/truncated
Raise the same error if a truncated image is loaded a second time
2 parents 2eb447e + 023dcf2 commit 8e3c4e3

File tree

4 files changed

+10
-2
lines changed

4 files changed

+10
-2
lines changed

Tests/test_file_jpeg.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,10 @@ def test_truncated_jpeg_throws_IOError(self):
369369
with self.assertRaises(IOError):
370370
im.load()
371371

372+
# Test that the error is raised if loaded a second time
373+
with self.assertRaises(IOError):
374+
im.load()
375+
372376
def _n_qtables_helper(self, n, test_file):
373377
im = Image.open(test_file)
374378
f = self.tempfile("temp.jpg")

Tests/test_imagefile.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ def test_truncated_with_errors(self):
111111
with self.assertRaises(IOError):
112112
im.load()
113113

114+
# Test that the error is raised if loaded a second time
115+
with self.assertRaises(IOError):
116+
im.load()
117+
114118
def test_truncated_without_errors(self):
115119
if "zip_encoder" not in codecs:
116120
self.skipTest("PNG (zlib) encoder not available")

src/PIL/ImageFile.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ def load(self):
244244
if LOAD_TRUNCATED_IMAGES:
245245
break
246246
else:
247-
self.tile = []
248247
raise IOError(
249248
"image file is truncated "
250249
"(%d bytes not processed)" % len(b)

src/PIL/PngImagePlugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ def _open(self):
612612
rawmode, data = self.png.im_palette
613613
self.palette = ImagePalette.raw(rawmode, data)
614614

615-
self.__idat = length # used by load_read()
615+
self.__prepare_idat = length # used by load_prepare()
616616

617617
@property
618618
def text(self):
@@ -645,6 +645,7 @@ def load_prepare(self):
645645
if self.info.get("interlace"):
646646
self.decoderconfig = self.decoderconfig + (1,)
647647

648+
self.__idat = self.__prepare_idat # used by load_read()
648649
ImageFile.ImageFile.load_prepare(self)
649650

650651
def load_read(self, read_bytes):

0 commit comments

Comments
 (0)