bpo-31848: Fix broken error handling in Aifc_read.initfp() when the SSND chunk is not found (#5240)

Initialize self._ssnd_chunk so that aifc.Error is raised as intended,
not AttributeError.
This commit is contained in:
Zackery Spytz 2018-02-20 14:06:11 -07:00 committed by Serhiy Storchaka
parent 7a1e1786f9
commit 80d20b918b
4 changed files with 12 additions and 0 deletions

View file

@ -266,6 +266,14 @@ class AIFCLowLevelTest(unittest.TestCase):
b = io.BytesIO(b'FORM' + struct.pack('>L', 4) + b'AIFF')
self.assertRaises(aifc.Error, aifc.open, b)
def test_read_no_ssnd_chunk(self):
b = b'FORM' + struct.pack('>L', 4) + b'AIFC'
b += b'COMM' + struct.pack('>LhlhhLL', 38, 0, 0, 0, 0, 0, 0)
b += b'NONE' + struct.pack('B', 14) + b'not compressed' + b'\x00'
with self.assertRaisesRegex(aifc.Error, 'COMM chunk and/or SSND chunk'
' missing'):
aifc.open(io.BytesIO(b))
def test_read_wrong_compression_type(self):
b = b'FORM' + struct.pack('>L', 4) + b'AIFC'
b += b'COMM' + struct.pack('>LhlhhLL', 23, 0, 0, 0, 0, 0, 0)