Skip to content

Commit e228835

Browse files
committed
Use _accept check in _open
1 parent 885e305 commit e228835

File tree

5 files changed

+22
-3
lines changed

5 files changed

+22
-3
lines changed

Tests/test_file_dds.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,13 @@ def test__accept_false():
196196
assert not output
197197

198198

199+
def test_invalid_file():
200+
invalid_file = "Tests/images/flower.jpg"
201+
202+
with pytest.raises(SyntaxError):
203+
DdsImagePlugin.DdsImageFile(invalid_file)
204+
205+
199206
def test_short_header():
200207
"""Check a short header"""
201208
with open(TEST_FILE_DXT5, "rb") as f:

Tests/test_file_ftex.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ def test_load_dxt1():
1616
assert_image_similar(im, target.convert("RGBA"), 15)
1717

1818

19+
def test_invalid_file():
20+
invalid_file = "Tests/images/flower.jpg"
21+
22+
with pytest.raises(SyntaxError):
23+
FtexImagePlugin.FtexImageFile(invalid_file)
24+
25+
1926
def test_constants_deprecation():
2027
for enum, prefix in {
2128
FtexImagePlugin.Format: "FORMAT_",

docs/example/DdsImagePlugin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,9 @@ class DdsImageFile(ImageFile.ImageFile):
210210
format_description = "DirectDraw Surface"
211211

212212
def _open(self):
213-
magic, header_size = struct.unpack("<II", self.fp.read(8))
213+
if not _accept(self.fp.read(4)):
214+
raise SyntaxError("not a DDS file")
215+
(header_size,) = struct.unpack("<I", self.fp.read(4))
214216
if header_size != 124:
215217
raise OSError(f"Unsupported header size {repr(header_size)}")
216218
header_bytes = self.fp.read(header_size - 4)

src/PIL/DdsImagePlugin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ class DdsImageFile(ImageFile.ImageFile):
111111
format_description = "DirectDraw Surface"
112112

113113
def _open(self):
114-
magic, header_size = struct.unpack("<II", self.fp.read(8))
114+
if not _accept(self.fp.read(4)):
115+
raise SyntaxError("not a DDS file")
116+
(header_size,) = struct.unpack("<I", self.fp.read(4))
115117
if header_size != 124:
116118
raise OSError(f"Unsupported header size {repr(header_size)}")
117119
header_bytes = self.fp.read(header_size - 4)

src/PIL/FtexImagePlugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ class FtexImageFile(ImageFile.ImageFile):
9494
format_description = "Texture File Format (IW2:EOC)"
9595

9696
def _open(self):
97-
struct.unpack("<I", self.fp.read(4)) # magic
97+
if not _accept(self.fp.read(4)):
98+
raise SyntaxError("not a FTEX file")
9899
struct.unpack("<i", self.fp.read(4)) # version
99100
self._size = struct.unpack("<2i", self.fp.read(8))
100101
mipmap_count, format_count = struct.unpack("<2i", self.fp.read(8))

0 commit comments

Comments
 (0)