[Python-checkins] r74167 - in python/trunk: Lib/test/test_builtin.py Misc/NEWS Objects/bytearrayobject.c
georg.brandl
python-checkins at python.org
Wed Jul 22 13:57:16 CEST 2009
Author: georg.brandl
Date: Wed Jul 22 13:57:15 2009
New Revision: 74167
Log:
Issue #6540: Fixed crash for bytearray.translate() with invalid parameters.
Modified:
python/trunk/Lib/test/test_builtin.py
python/trunk/Misc/NEWS
python/trunk/Objects/bytearrayobject.c
Modified: python/trunk/Lib/test/test_builtin.py
==============================================================================
--- python/trunk/Lib/test/test_builtin.py (original)
+++ python/trunk/Lib/test/test_builtin.py Wed Jul 22 13:57:15 2009
@@ -1472,6 +1472,11 @@
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):
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Wed Jul 22 13:57:15 2009
@@ -12,6 +12,8 @@
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
Modified: python/trunk/Objects/bytearrayobject.c
==============================================================================
--- python/trunk/Objects/bytearrayobject.c (original)
+++ python/trunk/Objects/bytearrayobject.c Wed Jul 22 13:57:15 2009
@@ -1465,15 +1465,17 @@
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 {
More information about the Python-checkins
mailing list