From 74ee485b21d7c36cc407e71fa915180b2456d1fc Mon Sep 17 00:00:00 2001 From: Paulo Matos Date: Thu, 7 May 2020 17:34:45 +0200 Subject: [PATCH] Ensure that the literal 1 is wide enough for a shift (#23) Fixes runtime error found by ubsan. original commit: 65e05772a1ee14d73c368f311e837b00af771a23 --- c/number.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/c/number.c b/c/number.c index 72e04019e9..52cd171d44 100644 --- a/c/number.c +++ b/c/number.c @@ -1698,7 +1698,7 @@ static ptr big_logbitp(n, x, xl, xs) ptr x; iptr n, xl; IBOOL xs; { if (i < 0) return Sfalse; n = n % bigit_bits; - return Sboolean(BIGIT(x,i) & (1 << n)); + return Sboolean(BIGIT(x,i) & ((bigit)1 << n)); } else { bigit xb; @@ -1831,7 +1831,7 @@ static ptr big_logbit1(tc, origx, n, x, xl, xs) ptr tc, origx, x; iptr n, xl; IB *--zp = x1; n -= bigit_bits; } - *--zp = x1 | (1 << n); + *--zp = x1 | ((bigit)1 << n); for (; i > 0; i -= 1) *--zp = *--xp; return copy_normalize(tc, zp, zl, 0); } else if (yl > xl) {