From 29500737d45cbca9604d9ce845fb2acc3f531401 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 5 May 2019 14:26:23 +0300 Subject: bpo-36791: Safer detection of integer overflow in sum(). (GH-13080) --- Python/bltinmodule.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'Python/bltinmodule.c') diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 7a2b259cbd..047cca057b 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2375,9 +2375,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; } -- cgit v1.2.1