diff options
author | Georg Brandl <georg@python.org> | 2009-07-22 12:06:11 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2009-07-22 12:06:11 (GMT) |
commit | 069bcc3dd99be9d4a0ea2202377066c0a77de651 (patch) | |
tree | e72e0ee70a669ce9fd29441a752ce3ad2b8e0efb | |
parent | 3cc12f69421f14c4d919cc015b71259056b3bc60 (diff) | |
download | cpython-069bcc3dd99be9d4a0ea2202377066c0a77de651.zip cpython-069bcc3dd99be9d4a0ea2202377066c0a77de651.tar.gz cpython-069bcc3dd99be9d4a0ea2202377066c0a77de651.tar.bz2 |
Merged revisions 74169 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
r74169 | georg.brandl | 2009-07-22 14:03:59 +0200 (Mi, 22 Jul 2009) | 9 lines
Merged revisions 74167 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74167 | georg.brandl | 2009-07-22 13:57:15 +0200 (Mi, 22 Jul 2009) | 1 line
Issue #6540: Fixed crash for bytearray.translate() with invalid parameters.
........
................
-rw-r--r-- | Lib/test/test_builtin.py | 5 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Objects/bytearrayobject.c | 8 |
3 files changed, 12 insertions, 3 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index fdb0ea2..28af247 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1229,6 +1229,11 @@ class BuiltinTest(unittest.TestCase): self.assertEqual(bin(-(2**65)), '-0b1' + '0' * 65) self.assertEqual(bin(-(2**65-1)), '-0b' + '1' * 65) + def test_bytearray_translate(self): + x = bytearray(b"abc") + self.assertRaises(ValueError, x.translate, b"1", 1) + self.assertRaises(TypeError, x.translate, b"1"*256, 1) + class TestSorted(unittest.TestCase): def test_basic(self): @@ -12,6 +12,8 @@ What's New in Python 3.1.1? Core and Builtins ----------------- +- Issue #6540: Fixed crash for bytearray.translate() with invalid parameters. + - Issue #6070: On posix platforms import no longer copies the execute bit from the .py file to the .pyc file if it is set. diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index 165fd10..f3d5697 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -1389,15 +1389,17 @@ bytearray_translate(PyByteArrayObject *self, PyObject *args) if (vtable.len != 256) { PyErr_SetString(PyExc_ValueError, "translation table must be 256 characters long"); - goto done; + PyBuffer_Release(&vtable); + return NULL; } table = (const char*)vtable.buf; } if (delobj != NULL) { if (_getbuffer(delobj, &vdel) < 0) { - delobj = NULL; /* don't try to release vdel buffer on exit */ - goto done; + if (tableobj != NULL) + PyBuffer_Release(&vtable); + return NULL; } } else { |