Patch #650653: Raise always value error if the table is not 256 bytes long.
This commit is contained in:
parent
63b4dd33c9
commit
00b6127097
|
@ -192,6 +192,8 @@ def run_method_tests(test):
|
|||
table = string.maketrans('a', 'A')
|
||||
test('translate', 'abc', 'Abc', table)
|
||||
test('translate', 'xyz', 'xyz', table)
|
||||
test('translate', 'xyz', ValueError, 'too short', 'strip')
|
||||
test('translate', 'xyz', ValueError, 'too short')
|
||||
|
||||
test('replace', 'one!two!three!', 'one@two!three!', '!', '@', 1)
|
||||
test('replace', 'one!two!three!', 'onetwothree', '!', '')
|
||||
|
|
|
@ -2070,6 +2070,12 @@ string_translate(PyStringObject *self, PyObject *args)
|
|||
else if (PyObject_AsCharBuffer(tableobj, &table1, &tablen))
|
||||
return NULL;
|
||||
|
||||
if (tablen != 256) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"translation table must be 256 characters long");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (delobj != NULL) {
|
||||
if (PyString_Check(delobj)) {
|
||||
del_table = PyString_AS_STRING(delobj);
|
||||
|
@ -2084,12 +2090,6 @@ string_translate(PyStringObject *self, PyObject *args)
|
|||
#endif
|
||||
else if (PyObject_AsCharBuffer(delobj, &del_table, &dellen))
|
||||
return NULL;
|
||||
|
||||
if (tablen != 256) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"translation table must be 256 characters long");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
del_table = NULL;
|
||||
|
|
Loading…
Reference in New Issue