diff options
author | Zackery Spytz <zspytz@gmail.com> | 2018-02-20 21:06:11 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2018-02-20 21:06:11 (GMT) |
commit | 80d20b918bd8a882043c493a7f958333ecb41727 (patch) | |
tree | 3ad6f72c03dd3218a75fa0fc50898f57275fb4a8 | |
parent | 7a1e1786f98ad49caa157dcdf14ada9d0b07d0fd (diff) | |
download | cpython-80d20b918bd8a882043c493a7f958333ecb41727.zip cpython-80d20b918bd8a882043c493a7f958333ecb41727.tar.gz cpython-80d20b918bd8a882043c493a7f958333ecb41727.tar.bz2 |
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.
-rw-r--r-- | Lib/aifc.py | 1 | ||||
-rw-r--r-- | Lib/test/test_aifc.py | 8 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2018-01-18-23-34-17.bpo-31848.M2cldy.rst | 2 |
4 files changed, 12 insertions, 0 deletions
diff --git a/Lib/aifc.py b/Lib/aifc.py index e51e8f8..3d2dc56 100644 --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -322,6 +322,7 @@ class Aifc_read: else: raise Error('not an AIFF or AIFF-C file') self._comm_chunk_read = 0 + self._ssnd_chunk = None while 1: self._ssnd_seek_needed = 1 try: diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py index a064a32..8fd306a 100644 --- a/Lib/test/test_aifc.py +++ b/Lib/test/test_aifc.py @@ -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) @@ -1512,6 +1512,7 @@ Nicholas Spies Per Spilling Joshua Spoerri Noah Spurrier +Zackery Spytz Nathan Srebro RajGopal Srinivasan Tage Stabell-Kulo diff --git a/Misc/NEWS.d/next/Library/2018-01-18-23-34-17.bpo-31848.M2cldy.rst b/Misc/NEWS.d/next/Library/2018-01-18-23-34-17.bpo-31848.M2cldy.rst new file mode 100644 index 0000000..c8e61ac --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-01-18-23-34-17.bpo-31848.M2cldy.rst @@ -0,0 +1,2 @@ +Fix the error handling in Aifc_read.initfp() when the SSND chunk is not found. +Patch by Zackery Spytz. |