From 8659febe534245ed8a5299637aa4ee0961aa1011 Mon Sep 17 00:00:00 2001 From: Rob Browning Date: Fri, 8 Oct 2021 10:47:28 -0500 Subject: [PATCH] bitmatch: check for overflow via intprops Signed-off-by: Rob Browning --- lib/bup/_helpers.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/bup/_helpers.c b/lib/bup/_helpers.c index fc1b69b..b5a3c79 100644 --- a/lib/bup/_helpers.c +++ b/lib/bup/_helpers.c @@ -620,8 +620,14 @@ static PyObject *bitmatch(PyObject *self, PyObject *args) } } - assert(byte <= (INT_MAX >> 3)); - return Py_BuildValue("i", byte*8 + bit); + unsigned long long result; + if (!INT_MULTIPLY_OK(byte, 8, &result) + || !INT_ADD_OK(result, bit, &result)) + { + PyErr_Format(PyExc_OverflowError, "bitmatch bit count too large"); + return NULL; + } + return PyLong_FromUnsignedLongLong(result); } -- 2.39.2