Skip to content

Commit 9e3ff54

Browse files
authored
Merge pull request #674 from kism/fix-ogg-trailing-null-bytes
Fix for ogg trailing null bytes
2 parents 9d0be69 + 1a6d91a commit 9e3ff54

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

mutagen/ogg.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ def __init__(self, fileobj=None):
8181
self.offset = fileobj.tell()
8282

8383
header = fileobj.read(27)
84+
85+
# If there is not enough data to make up the header...
86+
# we might be looking at trailing null bytes on the file.
87+
if len(header) < 27 and all(byte == 0 for byte in header):
88+
raise EOFError
89+
8490
if len(header) == 0:
8591
raise EOFError
8692

tests/test_ogg.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,24 @@ def test_renumber_reread(self):
261261
finally:
262262
os.unlink(filename)
263263

264+
def test_renumber_reread_trailing_bytes(self):
265+
try:
266+
filename = get_temp_copy(
267+
os.path.join(DATA_DIR, "multipagecomment.ogg"))
268+
269+
# Append some trailing bytes to the file
270+
with open(filename, "rb+") as fileobj:
271+
fileobj.seek(0, 2)
272+
fileobj.write(b"\x00" * 2)
273+
274+
with open(filename, "rb+") as fileobj:
275+
OggPage.renumber(fileobj, 1002429366, 20)
276+
277+
with open(filename, "rb+") as fileobj:
278+
OggPage.renumber(fileobj, 1002429366, 0)
279+
finally:
280+
os.unlink(filename)
281+
264282
def test_renumber_muxed(self):
265283
pages = [OggPage() for i in range(10)]
266284
for seq, page in enumerate(pages[0:1] + pages[2:]):

0 commit comments

Comments
 (0)