Stop reading EPS at EOF marker

This commit is contained in:
Andrew Murray 2024-01-25 20:20:53 +11:00
parent b3a7ae065c
commit 5721577e4e
2 changed files with 10 additions and 6 deletions

View File

@ -436,3 +436,11 @@ def test_eof_before_bounding_box():
with pytest.raises(OSError):
with Image.open("Tests/images/zero_bb_eof_before_boundingbox.eps"):
pass
def test_invalid_data_after_eof() -> None:
with open("Tests/images/illuCS6_preview.eps", "rb") as f:
img_bytes = io.BytesIO(f.read() + b"\r\n%" + (b" " * 255))
with Image.open(img_bytes) as img:
assert img.mode == "RGB"

View File

@ -356,14 +356,10 @@ class EpsImageFile(ImageFile.ImageFile):
self._size = columns, rows
return
elif bytes_mv[:5] == b"%%EOF":
break
elif trailer_reached and reading_trailer_comments:
# Load EPS trailer
# if this line starts with "%%EOF",
# then we've reached the end of the file
if bytes_mv[:5] == b"%%EOF":
break
s = str(bytes_mv[:bytes_read], "latin-1")
_read_comment(s)
elif bytes_mv[:9] == b"%%Trailer":