8000 CVE-2017-18207 Fix up code for Python2 · ActiveState/cpython@7e68f0b · GitHub
[go: up one dir, main page]

Skip to content

Commit 7e68f0b

Browse files
committed
CVE-2017-18207 Fix up code for Python2
1 parent 797551a commit 7e68f0b

File tree

5 files changed

+25
-26
lines changed

5 files changed

+25
-26
lines changed

Lib/aifc.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@
135135
"""
136136

137137
import struct
138+
import warnings
138139
import __builtin__
139140

140141
__all__ = ["Error","open","openfp"]
@@ -316,16 +317,16 @@ def initfp(self, file):
316317
except EOFError:
317318
break
318319
chunkname = chunk.getname()
319-
if chunkname == 'COMM':
320+
if chunkname == b'COMM':
320321
self._read_comm_chunk(chunk)
321322
self._comm_chunk_read = 1
322-
elif chunkname == 'SSND':
323+
elif chunkname == b'SSND':
323324
self._ssnd_chunk = chunk
324325
dummy = chunk.read(8)
325326
self._ssnd_seek_needed = 0
326-
elif chunkname == 'FVER':
327+
elif chunkname == b'FVER':
327328
self._version = _read_ulong(chunk)
328-
elif chunkname == 'MARK':
329+
elif chunkname == b'MARK':
329330
self._readmark(chunk)
330331
chunk.skip()
331332
if not self._comm_chunk_read or not self._ssnd_chunk:
@@ -466,16 +467,17 @@ def _read_comm_chunk(self, chunk):
466467
self._sampwidth = (_read_short(chunk) + 7) // 8
467468
self._framerate = int(_read_float(chunk))
468469
if self._sampwidth <= 0:
469-
raise Error('bad sample width')
470+
raise Error, 'bad sample width'
470471
if self._nchannels <= 0:
471-
raise Error('bad # of channels')
472+
raise Error, 'bad # of channels'
473+
472474
self._framesize = self._nchannels * self._sampwidth
473475
if self._aifc:
474476
#DEBUG: SGI's soundeditor produces a bad size :-(
475477
kludge = 0
476478
if chunk.chunksize == 18:
477479
kludge = 1
478-
print 'Warning: bad COMM chunk size'
480+
warnings.warn("bad COMM chunk size")
479481
chunk.chunksize = 23
480482
#DEBUG end
481483
self._comptype = chunk.read(4)
@@ -539,11 +541,13 @@ def _readmark(self, chunk):
539541
# a position 0 and name ''
540542
self._markers.append((id, pos, name))
541543
except EOFError:
542-
print 'Warning: MARK chunk contains only',
543-
print len(self._markers),
544-
if len(self._markers) == 1: print 'marker',
545-
else: print 'markers',
546-
print 'instead of', nmarkers
544+
warning_message = 'MARK chunk contains only ' + str(len(self._markers))
545+
if len(self._markers) == 1:
546+
warning_message += ' marker '
547+
else:
548+
warning_message += ' markers '
549+
warning_message += 'instead of ' + str(nmarkers)
550+
warnings.warn(warning_message)
547551

548552
class Aifc_write:
549553
# Variables used in this class:

Lib/test/test_aifc.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import sys
88
import struct
99
import aifc
10+
from test.test_support import check_warnings
1011

1112

1213
class AifcTest(audiotests.AudioWriteTests,
@@ -237,7 +238,7 @@ def test_read_wrong_number_of_channels(self):
237238
0x4000 | 12, 11025<<18, 0)
238239
b += b'NONE' + struct.pack('B', 14) + b'not compressed' + b'\x00'
239240
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
240-
with self.assertRaisesRegex(aifc.Error, 'bad # of channels'):
241+
with self.assertRaisesRegexp(aifc.Error, 'bad # of channels'):
241242
aifc.open(io.BytesIO(b))
242243

243244
def test_read_wrong_sample_width(self):
@@ -247,7 +248,7 @@ def test_read_wrong_sample_width(self):
247248
0x4000 | 12, 11025<<18, 0)
248249
b += b'NONE' + struct.pack('B', 14) + b'not compressed' + b'\x00'
249250
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
250-
with self.assertRaisesRegex(aifc.Error, 'bad sample width'):
251+
with self.assertRaisesRegexp(aifc.Error, 'bad sample width'):
251252
aifc.open(io.BytesIO(b))
252253

253254
def test_read_wrong_marks(self):
@@ -256,21 +257,18 @@ def test_read_wrong_marks(self):
256257
0x4000 | 12, 11025<<18, 0)
257258
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
258259
b += b'MARK' + struct.pack('>LhB', 3, 1, 1)
259-
with self.assertWarns(UserWarning) as cm:
260+
with check_warnings(('MARK chunk contains only 0 markers instead of 1', UserWarning)):
260261
f = aifc.open(io.BytesIO(b))
261-
self.assertEqual(s.getvalue(), 'Warning: MARK chunk contains '
262-
'only 0 markers instead of 1\n')
263-
self.assertEqual(f.getmarkers(), None)
262+
self.assertEqual(f.getmarkers(), None)
264263

265264
def test_read_comm_kludge_compname_even(self):
266265
b = b'FORM' + struct.pack('>L', 4) + b'AIFC'
267266
b += b'COMM' + struct.pack('>Lh D958 lhhLL', 18, 1, 0, 8,
268267
0x4000 | 12, 11025<<18, 0)
269268
b += b'NONE' + struct.pack('B', 4) + b'even' + b'\x00'
270269
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
271-
with self.assertWarns(UserWarning) as cm:
270+
with check_warnings(('bad COMM chunk size', UserWarning)):
272271
f = aifc.open(io.BytesIO(b))
273-
self.assertEqual(s.getvalue(), 'Warning: bad COMM chunk size\n')
274272
self.assertEqual(f.getcompname(), 'even')
275273

276274
def test_read_comm_kludge_compname_odd(self):
@@ -279,9 +277,8 @@ def test_read_comm_kludge_compname_odd(self):
279277
0x4000 | 12, 11025<<18, 0)
280278
b += b'NONE' + struct.pack('B', 3) + b'odd'
281279
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
282-
with self.assertWarns(UserWarning) as cm:
280+
with check_warnings(('bad COMM chunk size', UserWarning)):
283281
f = aifc.open(io.BytesIO(b))
284-
self.assertEqual(s.getvalue(), 'Warning: bad COMM chunk size\n')
285282
self.assertEqual(f.getcompname(), 'odd')
286283

287284
def test_write_params_raises(self):

Lib/test/test_sunau.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from test.test_support import TESTFN, run_unittest
22
import unittest
33
from test import audiotests
4-
from audioop import byteswap
54
import io
65
import struct
76
import sys

Lib/test/test_wave.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import unittest
33
from test import audiotests
44
from test import support
5-
from audioop import byteswap
65
import io
76
import struct
87
import sys

Lib/wave.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,12 +269,12 @@ def _read_fmt_chunk(self, chunk):
269269
try:
270270
wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('<HHLLH', chunk.read(14))
271271
except struct.error:
272-
raise EOFError from None
272+
raise EOFError
273273
if wFormatTag == WAVE_FORMAT_PCM:
274274
try:
275275
sampwidth = struct.unpack_from('<H', chunk.read(2))[0]
276276
except struct.error:
277-
raise EOFError from None
277+
raise EOFError
278278
self._sampwidth = (sampwidth + 7) // 8
279279
if not self._sampwidth:
280280
raise Error('bad sample width')

0 commit comments

Comments
 (0)
0