Kaydet (Commit) ec812caf authored tarafından Georg Brandl's avatar Georg Brandl

Issue #6540: Fixed crash for bytearray.translate() with invalid parameters.

üst af2406f2
......@@ -1472,6 +1472,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("abc")
self.assertRaises(ValueError, x.translate, "1", 1)
self.assertRaises(TypeError, x.translate, "1"*256, 1)
class TestSorted(unittest.TestCase):
def test_basic(self):
......
......@@ -12,6 +12,8 @@ What's New in Python 2.7 alpha 1
Core and Builtins
-----------------
- Issue #6540: Fixed crash for bytearray.translate() with invalid parameters.
- Issue #1616979: Added the cp720 (Arabic DOS) encoding.
- Issue #6070: On posix platforms import no longer copies the execute bit
......
......@@ -1465,15 +1465,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 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment