Skip to content

Commit

Permalink
Stop reading EPS at EOF marker
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Jan 25, 2024
1 parent b3a7ae0 commit 5721577
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
8 changes: 8 additions & 0 deletions Tests/test_file_eps.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
8 changes: 2 additions & 6 deletions src/PIL/EpsImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -356,14 +356,10 @@ def _read_comment(s):

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":
Expand Down

0 comments on commit 5721577

Please sign in to comment.