Issue #27507: Check for integer overflow in bytearray.extend()

Patch by Xiang Zhang.
This commit is contained in:
Martin Panter 2016-07-18 07:53:13 +00:00
parent 5852fa3f72
commit 371731ebfd
2 changed files with 14 additions and 1 deletions

View file

@ -2474,7 +2474,17 @@ bytearray_extend(PyByteArrayObject *self, PyObject *iterable_of_ints)
Py_DECREF(item);
if (len >= buf_size) {
buf_size = len + (len >> 1) + 1;
Py_ssize_t addition;
if (len == PY_SSIZE_T_MAX) {
Py_DECREF(it);
Py_DECREF(bytearray_obj);
return PyErr_NoMemory();
}
addition = len >> 1;
if (addition > PY_SSIZE_T_MAX - len - 1)
buf_size = PY_SSIZE_T_MAX;
else
buf_size = len + addition + 1;
if (PyByteArray_Resize((PyObject *)bytearray_obj, buf_size) < 0) {
Py_DECREF(it);
Py_DECREF(bytearray_obj);