[Python-checkins] [2.7] bpo-31848: Fix broken error handling in Aifc_read.initfp() when the SSND chunk is not found (GH-5240) (GH-5781)
Serhiy Storchaka
webhook-mailer at python.org
Wed Feb 21 01:37:38 EST 2018
https://github.com/python/cpython/commit/b852d8c1f0b12e84549d83cd9b1ec0992b9d9703
commit: b852d8c1f0b12e84549d83cd9b1ec0992b9d9703
branch: 2.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Serhiy Storchaka <storchaka at gmail.com>
date: 2018-02-21T08:37:18+02:00
summary:
[2.7] bpo-31848: Fix broken error handling in Aifc_read.initfp() when the SSND chunk is not found (GH-5240) (GH-5781)
Initialize self._ssnd_chunk so that aifc.Error is raised as intended,
not AttributeError.
(cherry picked from commit 80d20b918bd8a882043c493a7f958333ecb41727)
Co-authored-by: Zackery Spytz <zspytz at gmail.com>
files:
A Misc/NEWS.d/next/Library/2018-01-18-23-34-17.bpo-31848.M2cldy.rst
M Lib/aifc.py
M Lib/test/test_aifc.py
M Misc/ACKS
diff --git a/Lib/aifc.py b/Lib/aifc.py
index e6783277a471..981f8010690e 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -308,6 +308,7 @@ def initfp(self, file):
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 d1b7dd043257..92bbe7bc75da 100644
--- a/Lib/test/test_aifc.py
+++ b/Lib/test/test_aifc.py
@@ -214,6 +214,14 @@ def test_read_no_comm_chunk(self):
b = io.BytesIO('FORM' + struct.pack('>L', 4) + '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.assertRaisesRegexp(aifc.Error, 'COMM chunk and/or SSND chunk'
+ ' missing'):
+ aifc.open(io.BytesIO(b))
+
def test_read_wrong_compression_type(self):
b = 'FORM' + struct.pack('>L', 4) + 'AIFC'
b += 'COMM' + struct.pack('>LhlhhLL', 23, 0, 0, 0, 0, 0, 0)
diff --git a/Misc/ACKS b/Misc/ACKS
index f0a115d5d555..e02060d8dcf1 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1345,6 +1345,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 000000000000..c8e61acb0b06
--- /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.
More information about the Python-checkins
mailing list