From eaa77455c37cf18670d181556e6d17e0b01c2267 Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 25 Jan 2017 14:39:13 +1100 Subject: [PATCH] py/objint: Fix left-shift overflow in checking for large int. --- py/objint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/objint.c b/py/objint.c index a61ed8e275..222aa1de71 100644 --- a/py/objint.c +++ b/py/objint.c @@ -383,7 +383,7 @@ STATIC mp_obj_t int_from_bytes(size_t n_args, const mp_obj_t *args) { #if MICROPY_LONGINT_IMPL != MICROPY_LONGINT_IMPL_NONE // If result guaranteedly fits in small int, use that - if (!MP_SMALL_INT_FITS(1 << (bufinfo.len * 8 - 1))) { + if (bufinfo.len >= sizeof(mp_uint_t) || !MP_SMALL_INT_FITS(1 << (bufinfo.len * 8 - 1))) { return mp_obj_int_from_bytes_impl(args[2] != MP_OBJ_NEW_QSTR(MP_QSTR_little), bufinfo.len, bufinfo.buf); } else #endif