Raise ValueError if seeking to greater than offset-sized integer

This commit is contained in:
Andrew Murray 2024-03-16 13:33:04 +11:00
parent 794a7d691f
commit 21801f3a45
3 changed files with 7 additions and 0 deletions

Binary file not shown.

View File

@ -113,6 +113,10 @@ class TestFileTiff:
outfile = str(tmp_path / "temp.tif") outfile = str(tmp_path / "temp.tif")
im.save(outfile, save_all=True, append_images=[im], tiffinfo=im.tag_v2) im.save(outfile, save_all=True, append_images=[im], tiffinfo=im.tag_v2)
def test_seek_too_large(self):
with pytest.raises(ValueError, match="Unable to seek to frame"):
Image.open("Tests/images/seek_too_large.tif")
def test_set_legacy_api(self) -> None: def test_set_legacy_api(self) -> None:
ifd = TiffImagePlugin.ImageFileDirectory_v2() ifd = TiffImagePlugin.ImageFileDirectory_v2()
with pytest.raises(Exception) as e: with pytest.raises(Exception) as e:

View File

@ -1166,6 +1166,9 @@ class TiffImageFile(ImageFile.ImageFile):
self.__next, self.__next,
self.fp.tell(), self.fp.tell(),
) )
if self.__next >= 2**63:
msg = "Unable to seek to frame"
raise ValueError(msg)
self.fp.seek(self.__next) self.fp.seek(self.__next)
self._frame_pos.append(self.__next) self._frame_pos.append(self.__next)
logger.debug("Loading tags, location: %s", self.fp.tell()) logger.debug("Loading tags, location: %s", self.fp.tell())