Skip to content

Commit 85c6bfd

Browse files
Simplify logic
1 parent dabdd4f commit 85c6bfd

2 files changed

Lines changed: 5 additions & 8 deletions

File tree

‎Lib/gettext.py‎

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -359,21 +359,18 @@ def _parse(self, fp):
359359
self.plural = lambda n: int(n != 1) # germanic plural by default
360360
buf = fp.read()
361361
buflen = len(buf)
362-
# Are we big endian or little endian?
363-
if buflen < 4:
362+
if buflen < 20:
364363
raise OSError(0, 'File is corrupt', filename)
364+
# Are we big endian or litle endian?
365365
magic = unpack('<I', buf[:4])[0]
366366
if magic == self.LE_MAGIC:
367+
version, msgcount, masteridx, transidx = unpack('<4I', buf[4:20])
367368
ii = '<II'
368-
hdr = '<4I'
369369
elif magic == self.BE_MAGIC:
370+
version, msgcount, masteridx, transidx = unpack('>4I', buf[4:20])
370371
ii = '>II'
371-
hdr = '>4I'
372372
else:
373373
raise OSError(0, 'Bad magic number', filename)
374-
if buflen < 20:
375-
raise OSError(0, 'File is corrupt', filename)
376-
version, msgcount, masteridx, transidx = unpack(hdr, buf[4:20])
377374

378375
major_version, minor_version = self._get_versions(version)
379376

‎Lib/test/test_gettext.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
'''
4141

4242
# .mo file with an invalid magic number
43-
GNU_MO_DATA_BAD_MAGIC_NUMBER = base64.b64encode(b'ABCD')
43+
GNU_MO_DATA_BAD_MAGIC_NUMBER = base64.b64encode(b'ABCD' + bytes(16))
4444

4545
# This data contains an invalid major version number (5)
4646
# An unexpected major version number should be treated as an error when

0 commit comments

Comments
 (0)