Patch #650653: Raise always value error if the table is not 256 bytes long.

This commit is contained in:
Martin v. Löwis 2002-12-12 20:03:19 +00:00
parent 63b4dd33c9
commit 00b6127097
2 changed files with 8 additions and 6 deletions

View File

@ -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', '!', '')

View File

@ -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;