cpython: ce89dcba008f (original) (raw)
--- a/Lib/test/test_audioop.py +++ b/Lib/test/test_audioop.py @@ -21,9 +21,9 @@ def gendata4(): data = [gendata1(), gendata2(), gendata4()] INVALID_DATA = [
] @@ -94,7 +94,9 @@ class TestAudioop(unittest.TestCase): def test_adpcm2lin(self): # Very cursory test
self.assertEqual(audioop.adpcm2lin(b'\0\0', 1, None), (b'\0\0\0\0', (0,0)))[](#l1.20)
self.assertEqual(audioop.adpcm2lin(b'\0\0', 1, None), (b'\0' * 4, (0,0)))[](#l1.21)
self.assertEqual(audioop.adpcm2lin(b'\0\0', 2, None), (b'\0' * 8, (0,0)))[](#l1.22)
self.assertEqual(audioop.adpcm2lin(b'\0\0', 4, None), (b'\0' * 16, (0,0)))[](#l1.23)
def test_lin2adpcm(self): # Very cursory test @@ -109,6 +111,9 @@ class TestAudioop(unittest.TestCase): # Cursory d = audioop.lin2alaw(data[0], 1) self.assertEqual(audioop.alaw2lin(d, 1), data[0])
self.assertEqual(audioop.alaw2lin(d, 2), b'\x08\x00\x08\x01\x10\x02')[](#l1.31)
self.assertEqual(audioop.alaw2lin(d, 4),[](#l1.32)
b'\x00\x00\x08\x00\x00\x00\x08\x01\x00\x00\x10\x02')[](#l1.33)
def test_lin2ulaw(self): self.assertEqual(audioop.lin2ulaw(data[0], 1), b'\xff\xe7\xdb') @@ -119,6 +124,9 @@ class TestAudioop(unittest.TestCase): # Cursory d = audioop.lin2ulaw(data[0], 1) self.assertEqual(audioop.ulaw2lin(d, 1), data[0])
self.assertEqual(audioop.ulaw2lin(d, 2), b'\x00\x00\x04\x01\x0c\x02')[](#l1.41)
self.assertEqual(audioop.ulaw2lin(d, 4),[](#l1.42)
b'\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x0c\x02')[](#l1.43)
def test_mul(self): data2 = [] @@ -195,10 +203,15 @@ class TestAudioop(unittest.TestCase): self.assertRaises(audioop.error, audioop.lin2lin, data, size, size2) self.assertRaises(audioop.error, audioop.ratecv, data, size, 1, 1, 1, state) self.assertRaises(audioop.error, audioop.lin2ulaw, data, size)
self.assertRaises(audioop.error, audioop.lin2alaw, data, size)[](#l1.51)
self.assertRaises(audioop.error, audioop.lin2adpcm, data, size, state)[](#l1.52)
- def test_wrongsize(self):
data = b'abc'[](#l1.55)
state = None[](#l1.56)
for size in (-1, 3, 5):[](#l1.57) self.assertRaises(audioop.error, audioop.ulaw2lin, data, size)[](#l1.58)
self.assertRaises(audioop.error, audioop.lin2alaw, data, size)[](#l1.59) self.assertRaises(audioop.error, audioop.alaw2lin, data, size)[](#l1.60)
self.assertRaises(audioop.error, audioop.lin2adpcm, data, size, state)[](#l1.61) self.assertRaises(audioop.error, audioop.adpcm2lin, data, size, state)[](#l1.62)
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -461,6 +461,9 @@ Core and Builtins Library ------- +- Issue #13806: The size check in audioop decompression functions was too
- Issue #13812: When a multiprocessing Process child raises an exception, flush stderr after printing the exception traceback.
--- a/Modules/audioop.c +++ b/Modules/audioop.c @@ -1311,7 +1311,7 @@ audioop_ulaw2lin(PyObject *self, PyObjec &cp, &len, &size) ) return 0;
if (len > PY_SSIZE_T_MAX/size) { @@ -1380,7 +1380,7 @@ audioop_alaw2lin(PyObject *self, PyObjec &cp, &len, &size) ) return 0;
if (len > PY_SSIZE_T_MAX/size) { @@ -1524,7 +1524,7 @@ audioop_adpcm2lin(PyObject *self, PyObje &cp, &len, &size, &state) ) return 0;