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')
|
table = string.maketrans('a', 'A')
|
||||||
test('translate', 'abc', 'Abc', table)
|
test('translate', 'abc', 'Abc', table)
|
||||||
test('translate', 'xyz', 'xyz', 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!', 'one@two!three!', '!', '@', 1)
|
||||||
test('replace', 'one!two!three!', 'onetwothree', '!', '')
|
test('replace', 'one!two!three!', 'onetwothree', '!', '')
|
||||||
|
|
|
@ -2070,6 +2070,12 @@ string_translate(PyStringObject *self, PyObject *args)
|
||||||
else if (PyObject_AsCharBuffer(tableobj, &table1, &tablen))
|
else if (PyObject_AsCharBuffer(tableobj, &table1, &tablen))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if (tablen != 256) {
|
||||||
|
PyErr_SetString(PyExc_ValueError,
|
||||||
|
"translation table must be 256 characters long");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (delobj != NULL) {
|
if (delobj != NULL) {
|
||||||
if (PyString_Check(delobj)) {
|
if (PyString_Check(delobj)) {
|
||||||
del_table = PyString_AS_STRING(delobj);
|
del_table = PyString_AS_STRING(delobj);
|
||||||
|
@ -2084,12 +2090,6 @@ string_translate(PyStringObject *self, PyObject *args)
|
||||||
#endif
|
#endif
|
||||||
else if (PyObject_AsCharBuffer(delobj, &del_table, &dellen))
|
else if (PyObject_AsCharBuffer(delobj, &del_table, &dellen))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (tablen != 256) {
|
|
||||||
PyErr_SetString(PyExc_ValueError,
|
|
||||||
"translation table must be 256 characters long");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
del_table = NULL;
|
del_table = NULL;
|
||||||
|
|
Loading…
Reference in New Issue