diff -r 46567fda0b29 Objects/bytearrayobject.c --- a/Objects/bytearrayobject.c Sat Jul 09 11:05:42 2016 +0200 +++ b/Objects/bytearrayobject.c Sun Jul 10 21:55:33 2016 +0800 @@ -246,7 +246,6 @@ PyObject * PyByteArray_Concat(PyObject *a, PyObject *b) { - Py_ssize_t size; Py_buffer va, vb; PyByteArrayObject *result = NULL; @@ -259,13 +258,13 @@ goto done; } - size = va.len + vb.len; - if (size < 0) { - PyErr_NoMemory(); - goto done; + if (va.len > PY_SSIZE_T_MAX - vb.len) { + PyErr_NoMemory(); + goto done; } - result = (PyByteArrayObject *) PyByteArray_FromStringAndSize(NULL, size); + result = (PyByteArrayObject *) \ + PyByteArray_FromStringAndSize(NULL, va.len + vb.len); if (result != NULL) { memcpy(result->ob_bytes, va.buf, va.len); memcpy(result->ob_bytes + va.len, vb.buf, vb.len); diff -r 46567fda0b29 Objects/bytesobject.c --- a/Objects/bytesobject.c Sat Jul 09 11:05:42 2016 +0200 +++ b/Objects/bytesobject.c Sun Jul 10 21:55:33 2016 +0800 @@ -1388,7 +1388,6 @@ static PyObject * bytes_concat(PyObject *a, PyObject *b) { - Py_ssize_t size; Py_buffer va, vb; PyObject *result = NULL; @@ -1413,13 +1412,12 @@ goto done; } - size = va.len + vb.len; - if (size < 0) { + if (va.len > PY_SSIZE_T_MAX - vb.len) { PyErr_NoMemory(); goto done; } - result = PyBytes_FromStringAndSize(NULL, size); + result = PyBytes_FromStringAndSize(NULL, va.len + vb.len); if (result != NULL) { memcpy(PyBytes_AS_STRING(result), va.buf, va.len); memcpy(PyBytes_AS_STRING(result) + va.len, vb.buf, vb.len);