From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Sun, 12 May 2019 09:37:15 +0000 (-0700) Subject: bpo-36791: Safer detection of integer overflow in sum(). (GH-13080) X-Git-Tag: v3.7.4rc1~165 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7e483b6d07081d5f81860258e95785975a7cbf8;p=thirdparty%2FPython%2Fcpython.git bpo-36791: Safer detection of integer overflow in sum(). (GH-13080) (cherry picked from commit 29500737d45cbca9604d9ce845fb2acc3f531401) Co-authored-by: Serhiy Storchaka --- diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 6306c3ac5641..8083ac961feb 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2374,9 +2374,11 @@ builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start) } if (PyLong_CheckExact(item)) { long b = PyLong_AsLongAndOverflow(item, &overflow); - long x = i_result + b; - if (overflow == 0 && ((x^i_result) >= 0 || (x^b) >= 0)) { - i_result = x; + if (overflow == 0 && + (i_result >= 0 ? (b <= LONG_MAX - i_result) + : (b >= LONG_MIN - i_result))) + { + i_result += b; Py_DECREF(item); continue; }