Skip to content

Commit 3cdaee4

Browse files
committed
Raise UnidentifiedImageError when opening TIFF without dimensions
1 parent 7fe56d6 commit 3cdaee4

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

Tests/test_imagefile.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,19 @@ def test_ico(self) -> None:
9393
assert p.image is not None
9494
assert (48, 48) == p.image.size
9595

96+
@pytest.mark.filterwarnings("ignore:Corrupt EXIF data")
97+
def test_incremental_tiff(self) -> None:
98+
with ImageFile.Parser() as p:
99+
with open("Tests/images/hopper.tif", "rb") as f:
100+
p.feed(f.read(1024))
101+
102+
# Check that insufficient data was given in the first feed
103+
assert not p.image
104+
105+
p.feed(f.read())
106+
assert p.image is not None
107+
assert (128, 128) == p.image.size
108+
96109
@skip_unless_feature("webp")
97110
def test_incremental_webp(self) -> None:
98111
with ImageFile.Parser() as p:

src/PIL/TiffImagePlugin.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1433,8 +1433,12 @@ def _setup(self) -> None:
14331433
logger.debug("- YCbCr subsampling: %s", self.tag_v2.get(YCBCRSUBSAMPLING))
14341434

14351435
# size
1436-
xsize = self.tag_v2.get(IMAGEWIDTH)
1437-
ysize = self.tag_v2.get(IMAGELENGTH)
1436+
try:
1437+
xsize = self.tag_v2[IMAGEWIDTH]
1438+
ysize = self.tag_v2[IMAGELENGTH]
1439+
except KeyError as e:
1440+
msg = "Missing dimensions"
1441+
raise TypeError(msg) from e
14381442
if not isinstance(xsize, int) or not isinstance(ysize, int):
14391443
msg = "Invalid dimensions"
14401444
raise ValueError(msg)

0 commit comments

Comments
 (0)