diff --git a/PIL/IptcImagePlugin.py b/PIL/IptcImagePlugin.py index 323177039..b5aa84bad 100644 --- a/PIL/IptcImagePlugin.py +++ b/PIL/IptcImagePlugin.py @@ -217,7 +217,7 @@ def getiptcinfo(im): while app[offset:offset+4] == b"8BIM": offset += 4 # resource code - code = JpegImagePlugin.i16(app, offset) + code = i16(app, offset) offset += 2 # resource name (usually empty) name_len = i8(app[offset]) @@ -226,7 +226,7 @@ def getiptcinfo(im): if offset & 1: offset += 1 # resource data block - size = JpegImagePlugin.i32(app, offset) + size = i32(app, offset) offset += 4 if code == 0x0404: # 0x0404 contains IPTC/NAA data diff --git a/PIL/JpegImagePlugin.py b/PIL/JpegImagePlugin.py index 3d01c5fc1..550276c02 100644 --- a/PIL/JpegImagePlugin.py +++ b/PIL/JpegImagePlugin.py @@ -428,7 +428,7 @@ def _getexif(self): # exif field 0x8825 is an offset pointer to the location # of the nested embedded gps exif ifd. # It should be a long, but may be corrupted. - file.seek(exif[0x8825]) + file.seek(exif[0x8825]) except (KeyError, TypeError): pass else: diff --git a/PIL/PixarImagePlugin.py b/PIL/PixarImagePlugin.py index 26b872893..7fef35408 100644 --- a/PIL/PixarImagePlugin.py +++ b/PIL/PixarImagePlugin.py @@ -27,7 +27,6 @@ __version__ = "0.1" # helpers i16 = _binary.i16le -i32 = _binary.i32le ## diff --git a/PIL/SgiImagePlugin.py b/PIL/SgiImagePlugin.py index e73cf1601..f890c7ef6 100644 --- a/PIL/SgiImagePlugin.py +++ b/PIL/SgiImagePlugin.py @@ -24,7 +24,6 @@ __version__ = "0.2" i8 = _binary.i8 i16 = _binary.i16be -i32 = _binary.i32be def _accept(prefix): diff --git a/PIL/SunImagePlugin.py b/PIL/SunImagePlugin.py index 22f27a1c0..af63144f2 100644 --- a/PIL/SunImagePlugin.py +++ b/PIL/SunImagePlugin.py @@ -21,7 +21,6 @@ from PIL import Image, ImageFile, ImagePalette, _binary __version__ = "0.3" -i16 = _binary.i16be i32 = _binary.i32be diff --git a/PIL/TgaImagePlugin.py b/PIL/TgaImagePlugin.py index 8766e3890..a75ce2986 100644 --- a/PIL/TgaImagePlugin.py +++ b/PIL/TgaImagePlugin.py @@ -28,7 +28,6 @@ __version__ = "0.3" i8 = _binary.i8 i16 = _binary.i16le -i32 = _binary.i32le MODES = { diff --git a/Tests/test_file_jpeg.py b/Tests/test_file_jpeg.py index e6da7bb8b..367e57c14 100644 --- a/Tests/test_file_jpeg.py +++ b/Tests/test_file_jpeg.py @@ -370,7 +370,8 @@ class TestFileJpeg(PillowTestCase): # Act # Shouldn't raise error - im = Image.open("Tests/images/sugarshack_bad_mpo_header.jpg") + fn = "Tests/images/sugarshack_bad_mpo_header.jpg" + im = self.assert_warning(UserWarning, lambda: Image.open(fn)) # Assert self.assertEqual(im.format, "JPEG") diff --git a/Tests/test_file_tiff.py b/Tests/test_file_tiff.py index f8ce199da..a221f15cc 100644 --- a/Tests/test_file_tiff.py +++ b/Tests/test_file_tiff.py @@ -103,8 +103,9 @@ class TestFileTiff(PillowTestCase): lambda: TiffImagePlugin.TiffImageFile(invalid_file)) def test_bad_exif(self): + i = Image.open('Tests/images/hopper_bad_exif.jpg') try: - Image.open('Tests/images/hopper_bad_exif.jpg')._getexif() + self.assert_warning(UserWarning, lambda: i._getexif()) except struct.error: self.fail( "Bad EXIF data passed incorrect values to _binary unpack") diff --git a/Tests/test_file_tiff_metadata.py b/Tests/test_file_tiff_metadata.py index 1b5e05b4f..f2197ad04 100644 --- a/Tests/test_file_tiff_metadata.py +++ b/Tests/test_file_tiff_metadata.py @@ -1,5 +1,8 @@ from __future__ import division +import io +import struct + from helper import unittest, PillowTestCase, hopper from PIL import Image, TiffImagePlugin, TiffTags @@ -136,6 +139,15 @@ class TestFileTiffMetadata(PillowTestCase): self.assertEqual(tag_ids['MakerNoteSafety'], 50741) self.assertEqual(tag_ids['BestQualityScale'], 50780) + def test_empty_metadata(self): + f = io.BytesIO(b'II*\x00\x08\x00\x00\x00') + head = f.read(8) + info = TiffImagePlugin.ImageFileDirectory(head) + try: + self.assert_warning(UserWarning, lambda: info.load(f)) + except struct.error: + self.fail("Should not be struct errors there.") + if __name__ == '__main__': unittest.main()