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

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.
........
üst 2f19bb14
...@@ -1229,6 +1229,11 @@ class BuiltinTest(unittest.TestCase): ...@@ -1229,6 +1229,11 @@ class BuiltinTest(unittest.TestCase):
self.assertEqual(bin(-(2**65)), '-0b1' + '0' * 65) self.assertEqual(bin(-(2**65)), '-0b1' + '0' * 65)
self.assertEqual(bin(-(2**65-1)), '-0b' + '1' * 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): class TestSorted(unittest.TestCase):
def test_basic(self): def test_basic(self):
......
...@@ -12,6 +12,8 @@ What's New in Python 3.2 Alpha 1? ...@@ -12,6 +12,8 @@ What's New in Python 3.2 Alpha 1?
Core and Builtins 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 - Issue #6070: On posix platforms import no longer copies the execute bit
from the .py file to the .pyc file if it is set. from the .py file to the .pyc file if it is set.
......
...@@ -1389,15 +1389,17 @@ bytearray_translate(PyByteArrayObject *self, PyObject *args) ...@@ -1389,15 +1389,17 @@ bytearray_translate(PyByteArrayObject *self, PyObject *args)
if (vtable.len != 256) { if (vtable.len != 256) {
PyErr_SetString(PyExc_ValueError, PyErr_SetString(PyExc_ValueError,
"translation table must be 256 characters long"); "translation table must be 256 characters long");
goto done; PyBuffer_Release(&vtable);
return NULL;
} }
table = (const char*)vtable.buf; table = (const char*)vtable.buf;
} }
if (delobj != NULL) { if (delobj != NULL) {
if (_getbuffer(delobj, &vdel) < 0) { if (_getbuffer(delobj, &vdel) < 0) {
delobj = NULL; /* don't try to release vdel buffer on exit */ if (tableobj != NULL)
goto done; PyBuffer_Release(&vtable);
return NULL;
} }
} }
else { 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