Author: georg.brandl Date: Wed Jul 22 14:03:59 2009 New Revision: 74169 Log: 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. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_builtin.py python/branches/py3k/Misc/NEWS python/branches/py3k/Objects/bytearrayobject.c Modified: python/branches/py3k/Lib/test/test_builtin.py ============================================================================== --- python/branches/py3k/Lib/test/test_builtin.py (original) +++ python/branches/py3k/Lib/test/test_builtin.py Wed Jul 22 14:03:59 2009 @@ -1229,6 +1229,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(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): Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jul 22 14:03:59 2009 @@ -12,6 +12,8 @@ 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. Modified: python/branches/py3k/Objects/bytearrayobject.c ============================================================================== --- python/branches/py3k/Objects/bytearrayobject.c (original) +++ python/branches/py3k/Objects/bytearrayobject.c Wed Jul 22 14:03:59 2009 @@ -1389,15 +1389,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 {
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4